【发布时间】:2012-11-23 12:06:50
【问题描述】:
我正在尝试拆分一个逗号分隔的字符串,然后对每个令牌执行一些操作,但忽略重复项,等等。大致如下:
int main(int, char**)
{
string text = "token, test string";
char_separator<char> sep(", ");
tokenizer< char_separator<char> > tokens(text, sep);
// remove duplicates from tokens?
BOOST_FOREACH (const string& t, tokens) {
cout << t << "." << endl;
}
}
有没有办法在 boost::tokenizer 上做到这一点?
我知道我可以使用 boost::split 和 std::unique 来解决这个问题,但我想知道是否也有办法使用分词器来解决这个问题。
【问题讨论】:
-
std::unique仅适用于排序范围,您的输入是否始终排序? (如果没有,您是否有兴趣过滤所有重复项,或者只过滤彼此相同的相邻元素) -
我很确定答案是否定的——tokenizer 不会跟踪以前的 token,所以它无法知道当前的 token 是新的还是重复以前的。跨度>
-
@Mankarse:你说得对,我在 boost::split 案例中对 std::sort 进行了额外调用。
标签: c++ boost boost-tokenizer