使用Boost库拆分字符串


在日常开发中经常会遇到分割字符串的要求,boost库为我们提供了一个方便的分词器——boost::tokenizer。现在就让我们学习一下boost库的分词器。

  1. #include <string>   
  2. #include <iostream>   
  3.   
  4. #include <boost/format.hpp>   
  5. #include <boost/tokenizer.hpp>   
  6. #include <boost/algorithm/string.hpp>   
  7.   
  8. int _tmain(int argc, _TCHAR* argv[])  
  9. {  
  10.     // 待分割的字符串   
  11.     std::string strTag = _T("I Come from China");  
  12.     // 定义分割方式为英文逗号,中文逗号和空格,构造一个分词器,   
  13.     boost::char_separator<char> sep(" ,,");  
  14.     typedef boost::tokenizer<boost::char_separator<char> >  
  15.         CustonTokenizer;  
  16.     CustonTokenizer tok(strTag,sep);  
  17.   
  18.     // 输出分割结果   
  19.     std::vector<std::string> vecSegTag;  
  20.     for(CustonTokenizer::iterator beg=tok.begin(); beg!=tok.end();++beg)  
  21.     {  
  22.         vecSegTag.push_back(*beg);  
  23.     }  
  24.   
  25.     for (size_t i  =0;i<vecSegTag.size();i++)  
  26.     {  
  27.         std::cout<<vecSegTag[i]<<std::endl;  
  28.     }  
  29.   
  30.     // 尝试下分割中文字符   
  31.     vecSegTag.clear();  
  32.     std::string strTag2 = _T("我叫小明,你呢,今天天气不错");  
  33.     CustonTokenizer tok2(strTag2,sep);  
  34.     for(CustonTokenizer::iterator beg=tok2.begin(); beg!=tok2.end();++beg)  
  35.     {  
  36.         vecSegTag.push_back(*beg);  
  37.     }  
  38.   
  39.     for (size_t i  =0;i<vecSegTag.size();i++)  
  40.     {  
  41.         std::cout<<vecSegTag[i]<<std::endl;  
  42.     }  
  43.   
  44.     getchar();  
  45.     return 0;  
  46. }  

  • 1
  • 2
  • 下一页

相关内容