歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 使用Boost庫拆分字符串

使用Boost庫拆分字符串

日期:2017/3/1 10:23:44   编辑:Linux編程

在日常開發中經常會遇到分割字符串的要求,boost庫為我們提供了一個方便的分詞器——boost::tokenizer。現在就讓我們學習一下boost庫的分詞器。

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

Copyright © Linux教程網 All Rights Reserved