有没有一种好的方法可以通过多个定界符来拆分字符串(在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;
}

09-06 13:44