本文介绍了的boost ::标记生成逗号分隔(C ++)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
应该是你们一个容易.....
Should be an easy one for you guys.....
我和断词使用Boost玩弄,我想创建一个逗号分隔的令牌。这里是我的code:
I'm playing around with tokenizers using Boost and I want create a token that is comma separated. here is my code:
string s = "this is, , , a test";
boost::char_delimiters_separator<char> sep(",");
boost::tokenizer<boost::char_delimiters_separator<char>>tok(s, sep);
for(boost::tokenizer<>::iterator beg= tok.begin(); beg!=tok.end(); ++beg)
{
cout << *beg << "\n";
}
这是我想要的输出是:
This is
a test
我所得到的是:
This
is
,
,
,
a
test
更新时间:
推荐答案
您必须给分隔标记生成器!
You must give the separator to tokenizer!
boost::tokenizer<boost::char_delimiters_separator<char>>tok(s, sep);
此外,更换德precated char_delimiters_separator与char_delimiter:
Also, replace the deprecated char_delimiters_separator with char_delimiter:
string s = "this is, , , a test";
boost::char_separator<char> sep(",");
boost::tokenizer< boost::char_separator<char> > tok(s, sep);
for(boost::tokenizer< boost::char_separator<char> >::iterator beg = tok.begin(); beg != tok.end(); ++beg)
{
cout << *beg << "\n";
}
请注意,也有一个模板参数不匹配:这是很好的习惯,这样的typedef复杂类型:所以最终的版本可能是:
Please note that there is also a template parameter mismatch: it's good habit to typedef such complex types: so the final version could be:
string s = "this is, , , a test";
boost::char_separator<char> sep(",");
typedef boost::tokenizer< boost::char_separator<char> > t_tokenizer;
t_tokenizer tok(s, sep);
for (t_tokenizer::iterator beg = tok.begin(); beg != tok.end(); ++beg)
{
cout << *beg << "\n";
}
这篇关于的boost ::标记生成逗号分隔(C ++)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!