2011-09-15 57 views
8

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

STR =“xxaxxxxabcxxxxbxxxcxxx”

有拆分此字符串的方法使用“ABC”作为分隔符?因此返回:

结果将是字符串“xxaxxxx”和“xxxxbxxxcxxx”

我知道的boost ::分裂使用“is_any_of”谓词,但援引“is_any_of(” ABC“)”会导致在单个字符'a','b'和'c'处分割字符串,这不是我想要的。

任何帮助,将不胜感激。

谢谢

+0

你应该能够使用'equals'和字符串值的某些组合作为分隔符,但是具体情况现在还没有。 –

+2

[Split on substring]的可能重复(http://stackoverflow.com/questions/3739280/split-on-substring) – Cubbi

回答

6
split_regex

通过@Mythli建议是好的。如果您不想处理正则表达式,则可以使用ifind_all算法,如example中所示。您会收到您分隔符发生的所有事件的iterator_range(开始/结束)。您的令牌位于它们之间(以及字符串的开头和结尾)。

+0

谢谢,这个解决方案完全符合我的需求。 – andre

6

是有一种方法(这是一种方法,我知道,也许有更好的方法)使用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")) ; 
+1

谢谢,这个解决方案的工作原理,但它需要建立提升。目前我只使用头文件。 – andre

+1

#include

相关问题