用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 。