![](/img/trans.png)
[英]split a string using multiple delimiters (including delimiters) in 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.