用C ++编写的strtok()模拟
我只是找不到一个算法来将字符串拆分成多个分隔符。 我知道如何用istringtream
用空格分割字符串,用getline
用单分隔符分割字符串。 我怎样才能将它们连接起来。
例如:
输入 : This -is-a!,string;
输出 :
This is a string
#include #include #include using namespace std; void SplitToVector(vector &v, string dlm, string src){ string::size_type p, start=0, len=src.length(); v.clear(); start = src.find_first_not_of(dlm); p = src.find_first_of(dlm, start); while(p != string::npos){ v.push_back(src.substr(start, p-start)); start = src.find_first_not_of(dlm, p); p = src.find_first_of(dlm, start); } if(len>start)//rest v.push_back(src.substr(start, len - start)); } int main(void){ char input[256] = "This -is-a!,string;"; vector v; int i, size; SplitToVector(v, "-!,;", input); //cout << input << endl; size = v.size(); for(i=0; i
为什么不只是#include
并在您的C ++程序中使用std::strtok()
?
我建议使用boost(字符串算法)进行拆分,请参阅http://www.boost.org/doc/libs/1_53_0/doc/html/string_algo/usage.html#idp163440592 。