繁体   English   中英

C ++:使用多个定界符拆分字符串并将定界符保留在结果中?

[英]C++: Splitting a string with multiple delimiters and keep the delimiters in the results?

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

您可以利用前瞻性来做到这一点。 用表达式拆分:

(?=,)

对于逗号分隔符,并添加(可能在字符类中: [ ... ] )中要拆分的其他分隔符。

所以, this,is,an,example变成了: this ,is ,an ,example (即分隔符去与它后面的项)

否则,您将使用后面的查询(含义(?<=,) )获得: this, is, an, example

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM