也许有人可以告诉我这里发生了什么?
我的意图是在大括号上拆分输入字符串:即:' ( ' 或 ' ) '。
对于“(well)hello(there)world”的输入字符串,我希望返回 4 个标记:你好; 那里; 世界。
正如您从下面的示例应用程序中看到的那样,我得到了 5 个令牌(第一个是空字符串)。
有没有办法让这个只返回非空字符串?
#include <iostream>
#include <boost/algorithm/string.hpp>
#include <vector>
int main()
{
std::string in = "(well)hello(there)world";
std::vector<std::string> tokens;
boost::split(tokens, in, boost::is_any_of("()"));
for (auto s : tokens)
std::cout << "\"" << s << "\"" << std::endl;
return 0;
}
输出:
$ a.out
"" <-- where is this token coming from?
"well"
"hello"
"there"
"world"
我试过使用boost::algorithm::token_compress_on
,但我得到了相同的结果。