歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

使用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. }  

Copyright © Linux教程網 All Rights Reserved