Boost :: Split使用整个字符串作为分隔符

and*_*dre 10 c++ string boost tokenize

我想知道是否有一个方法使用boost :: split来分割一个字符串,使用整个字符串作为分隔符.例如:

str ="xxaxxxxabcxxxxbxxxcxxx"

有没有一种方法来分析这个字符串使用"abc"作为分隔符?因此返回:

结果将是字符串"xxaxxxx"和"xxxxbxxxcxxx"

我使用"is_any_of"谓词知道boost :: split,但是调用"is_any_of("abc")"会导致将字符串拆分为单个字符'a','b'和'c',这不是我想要的.

任何帮助,将不胜感激.

谢谢

Myt*_*hli 7

是的,有一种方法(这是我知道的一种方式,也许有更好的方法)boost::algorithm::split_regex用于分割字符序列,其中分隔符是正则表达式.

例:

vector< string > result;
boost::algorithm::split_regex( result, str, regex( "^((?!abc)*abc(?!abc)*)*$" ) ) ;
copy( result.begin(), result.end(), ostream_iterator<string>( cout, "\n" ) ) ;
Run Code Online (Sandbox Code Playgroud)

  • #include <boost/algorithm/string/regex.hpp> (2认同)

And*_*hko 6

split_regex正如@Mythli建议的那样好.如果您不想处理正则表达式,可以使用ifind_all算法,如本所示.您收到iterator_range(开始/结束)所有出现的分隔符.您的令牌位于它们之间(以及字符串的开头和结尾).