有没有一种好的方法可以通过多个定界符来拆分字符串(在C或C++中),同时将定界符保留为拆分字符串的一部分?我发现做到这一点的唯一方法是使用正则表达式,我宁愿不必为此而引入另一个库? (我使用STL作为字符串,而不使用Boost)。
最佳答案
没有regexp,尽管我不确定它是快还是慢:
vector<string> split(string& stringToSplit)
{
vector<string> result;
size_t pos = 0, lastPos = 0;
while ((pos = stringToSplit.find_first_of(";,|", lastPos)) != string::npos)
{
result.push_back(stringToSplit.substr(lastPos, pos-lastPos+1));
lastPos = pos+1;
}
result.push_back(stringToSplit.substr(lastPos));
return result;
}