我使用boost::split
方法来分割字符串作为这样的:C++助推分割字符串
我首先要确保包括正确的头能够访问boost::split
:
#include <boost/algorithm/string.hpp>
则:
vector<string> strs;
boost::split(strs,line,boost::is_any_of("\t"));
时线路等
"test test2 test3"
这是我如何消费的结果字符串向量:
void printstrs(vector<string> strs)
{
for(vector<string>::iterator it = strs.begin();it!=strs.end();++it)
{
cout << *it << "-------";
}
cout << endl;
}
但为什么在结果strs
我只得到"test2"
和"test3"
,不应该是"test"
,"test2"
和"test3"
,有\t
(标签)的字符串。
更新于2011年4月24日:似乎在我改变了一行代码printstrs
我可以看到第一个字符串。我改变
cout << *it << "-------";
到
cout << *it << endl;
,似乎"-------"
覆盖的第一串莫名其妙。
显示你如何使用矢量。我猜这个问题在那里。 – 2011-04-20 17:44:11
'boost :: is_any_of(“\ t”)'效率低于'[](char c){return c =='\ t';}'。你只是想检查一个可能性。 (不知道为什么没有提升:是('\ t')') – MSalters 2013-08-26 10:33:35
@MSalters评论中的代码是什么意思?我如何使用该代码来替代'boost :: is_any_of()'? – 2016-08-05 18:22:10