我想分割任何出現的字符串and
。C++將整個字符串拆分爲另一個字符串
首先我必須說清楚,我不打算使用任何regex
作爲分隔符。
我運行下面的代碼:
#include <iostream>
#include <regex>
#include <boost/algorithm/string.hpp>
int main()
{
std::vector<std::string> results;
std::string text=
"Alexievich, Svetlana and Lindahl,Tomas and Campbell,William";
boost::split(
results,
text,
boost::is_any_of(" and "),
boost::token_compress_off
);
for(auto result:results)
{
std::cout<<result<<"\n";
}
return 0;
}
,其結果是從不同的我所期望的:
Alexievich,
Svetl
Li
hl,Tom
s
C
mpbell,Willi
m
它單獨似乎定界符行爲的每一個字符,而我需要有整個and
作爲分隔符。
請不要鏈接到this boost example,除非您確定它可以用於我的情況。
這就是'is_any_of'的意思,它與*字符串中的任何*字符匹配。第三個參數是* predicate *,這意味着它可以是任何可調用的對象,包括lambda。另一個問題是['boost :: split'](http://www.boost.org/doc/libs/1_61_0/doc/html/boost/algorithm/split_idp205739088.html)似乎是基於* character *的,而不是「單詞」的基礎。 –
@JoachimPileborg,謝謝你的評論。要替換什麼? – jeremine