2011-09-15 116 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

相關問題