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

来源:互联网 发布:指导生活的算法mobi 编辑:程序博客网 时间:2024/05/22 01:19
#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 splitiuc@iuc-linux ~/Project/CodeLibrares $ ./split strlist_0=namestrlist_1=wangkaixuanstrlist_2=idstrlist_3=111strlist_4=passwordstrlist_5=222---------------strlist_0=namestrlist_1=strlist_2=wangkaixuanstrlist_3=strlist_4=idstrlist_5=strlist_6=111strlist_7=strlist_8=passwordstrlist_9=strlist_10=222---------------strlist_0=namestrlist_1=strlist_2=strlist_3=wangkaixuanstrlist_4=strlist_5=strlist_6=idstrlist_7=strlist_8=strlist_9=111strlist_10=strlist_11=strlist_12=passwordstrlist_13=strlist_14=strlist_15=222---------------strlist_0=namestrlist_1=wangkaixuanstrlist_2=idstrlist_3=111strlist_4=passwordstrlist_5=222iuc@iuc-linux ~/Project/CodeLibrares $ 结果分析:默认情况下split的第四个参数是boost::token_compress_off,对于str = "asdfghjkl",以"fgh"切分结果为"asd",空,空,"jkl",注意,这里的空不是空格。而是'f','h'之间的空。如果不想要这个空,指定boost::token_compress_on就行了.
0 0
原创粉丝点击