我想分割任何出现的字符串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