您的位置:首页 > 其它

boost::split提取字符串需要注意的地方

2016-03-13 00:27 309 查看
#include <string>
#include <iostream>
#include <vector>
#include <boost/algorithm/string.hpp>
using namespace std;
int main(){
vector<string> itemlist;

string strinfo="name#wangkaixuan#id#111#password#222";
boost::split(itemlist, strinfo, boost::is_any_of("#"));
for (int i = 0; i < itemlist.size(); ++i)
{
cout<<"strlist_"<<i<<"="<<itemlist[i]<<endl;
}
cout<<"---------------"<<endl;
strinfo="name#@wangkaixuan#@id#@111#@password#@222";
boost::split(itemlist, strinfo, boost::is_any_of("#@"));
for (int i = 0; i < itemlist.size(); ++i)
{
cout<<"strlist_"<<i<<"="<<itemlist[i]<<endl;
}

cout<<"---------------"<<endl;
strinfo="name#@-wangkaixuan#@-id#@-111#@-password#@-222";
boost::split(itemlist, strinfo, boost::is_any_of("#@-"));
for (int i = 0; i < itemlist.size(); ++i)
{
cout<<"strlist_"<<i<<"="<<itemlist[i]<<endl;
}

cout<<"---------------"<<endl;
strinfo="name#@-wangkaixuan#@-id#@-111#@-password#@-222";
boost::split(itemlist, strinfo, boost::is_any_of("#@-"),boost::token_compress_on);
for (int i = 0; i < itemlist.size(); ++i)
{
cout<<"strlist_"<<i<<"="<<itemlist[i]<<endl;
}

return 0;
}


运行结果:
iuc@iuc-linux ~/Project/CodeLibrares $ g++ split.cpp -o split
iuc@iuc-linux ~/Project/CodeLibrares $ ./split
strlist_0=name
strlist_1=wangkaixuan
strlist_2=id
strlist_3=111
strlist_4=password
strlist_5=222
---------------
strlist_0=name
strlist_1=
strlist_2=wangkaixuan
strlist_3=
strlist_4=id
strlist_5=
strlist_6=111
strlist_7=
strlist_8=password
strlist_9=
strlist_10=222
---------------
strlist_0=name
strlist_1=
strlist_2=
strlist_3=wangkaixuan
strlist_4=
strlist_5=
strlist_6=id
strlist_7=
strlist_8=
strlist_9=111
strlist_10=
strlist_11=
strlist_12=password
strlist_13=
strlist_14=
strlist_15=222
---------------
strlist_0=name
strlist_1=wangkaixuan
strlist_2=id
strlist_3=111
strlist_4=password
strlist_5=222
iuc@iuc-linux ~/Project/CodeLibrares $

结果分析:
默认情况下split的第四个参数是boost::token_compress_off,对于str = "asdfghjkl",以"fgh"切分结果为"asd",空,空,"jkl",注意,这里的空不是空格。而是'f','h'之间的空。如果不想要这个空,指定boost::token_compress_on就行了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  boost string