📄 stringtokenizer.cpp
字号:
#include "StringTokenizer.h"StringTokenizer::StringTokenizer(const std::string& _str, const std::string& _delim){ if ((_str.length() == 0) || (_delim.length() == 0)) return; token_str = _str; delim = _delim; /* Remove sequential delimiter */ unsigned int curr_pos = 0; while(true) { if ((curr_pos = token_str.find(delim,curr_pos)) != std::string::npos) { curr_pos += delim.length(); while(token_str.find(delim,curr_pos) == curr_pos) { token_str.erase(curr_pos,delim.length()); } } else break; } /* Trim leading delimiter */ if (token_str.find(delim,0) == 0) { token_str.erase(0,delim.length()); } /* Trim ending delimiter */ curr_pos = 0; if ((curr_pos = token_str.rfind(delim)) != std::string::npos) { if (curr_pos != (token_str.length() - delim.length())) return; token_str.erase(token_str.length() - delim.length(),delim.length()); }}int StringTokenizer::countTokens(){ unsigned int prev_pos = 0; int num_tokens = 0; if (token_str.length() > 0) { num_tokens = 0; unsigned int curr_pos = 0; while(true) { if ((curr_pos = token_str.find(delim,curr_pos)) != std::string::npos) { num_tokens++; prev_pos = curr_pos; curr_pos += delim.length(); } else break; } return ++num_tokens; } else { return 0; }}bool StringTokenizer::hasMoreTokens(){ return (token_str.length() > 0);}std::string StringTokenizer::nextToken(){ if (token_str.length() == 0) return ""; std::string tmp_str = ""; unsigned int pos = token_str.find(delim,0); if (pos != std::string::npos) { tmp_str = token_str.substr(0,pos); //该值会修改token_str token_str = token_str.substr(pos+delim.length(),token_str.length()-pos); } else { tmp_str = token_str.substr(0,token_str.length()); token_str = ""; } return tmp_str;}int StringTokenizer::nextIntToken(){ return atoi(nextToken().c_str());}double StringTokenizer::nextFloatToken(){ return atof(nextToken().c_str());}std::string StringTokenizer::nextToken(const std::string& delimiter){ if (token_str.length() == 0) return ""; std::string tmp_str = ""; unsigned int pos = token_str.find(delimiter,0); if (pos != std::string::npos) { tmp_str = token_str.substr(0,pos); token_str = token_str.substr(pos + delimiter.length(),token_str.length() - pos); } else { tmp_str = token_str.substr(0,token_str.length()); token_str = ""; } return tmp_str;}std::string StringTokenizer::remainingString(){ return token_str;}std::string StringTokenizer::filterNextToken(const std::string& filterStr){ std::string tmp_str = nextToken(); unsigned int currentPos = 0; while((currentPos = tmp_str.find(filterStr,currentPos)) != std::string::npos) { tmp_str.erase(currentPos,filterStr.length()); } return tmp_str;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -