码迷,mamicode.com
首页 > 编程语言 > 详细

c++分割字符串(类似于boost::split)

时间:2016-08-10 06:33:44      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:

  由于c++字符串没有split函数,所以字符串分割单词的时候必须自己手写,也相当于自己实现一个split函数吧!

  如果需要根据单一字符分割单词,直接用getline读取就好了,很简单

 1 #include <iostream>
 2 #include <vector>
 3 #include <string>
 4 #include <sstream>
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     string words;
10     vector<string> results;
11     getline(cin, words);
12 istringstream ss(words); 13 while (!ss.eof()) 14 { 15 string word; 16 getline(ss, word, ,); 17 results.push_back(word); 18 } 19 for (auto item : results) 20 { 21 cout << item << " "; 22 } 23 }

  如果是多种字符分割,比如,。!等等,就需要自己写一个类似于split的函数了:

 1 #include <iostream>
 2 #include <vector>
 3 #include <string>
 4 #include <sstream>
 5 using namespace std;
 6 
 7 vector<char> is_any_of(string str)
 8 {
 9     vector<char> res;
10     for (auto s : str)
11         res.push_back(s);
12     return res;
13 }
14 
15 void split(vector<string>& result, string str, vector<char> delimiters)
16 {
17     result.clear();
18     auto start = 0;
19     while (start < str.size())
20     {
21         //根据多个分割符分割
22         auto itRes = str.find(delimiters[0], start);
23         for (int i = 1; i < delimiters.size(); ++i)
24         {
25             auto it = str.find(delimiters[i],start);
26             if (it < itRes)
27                 itRes = it;
28         }
29         if (itRes == string::npos)
30         {
31             result.push_back(str.substr(start, str.size() - start));
32             break;
33         }
34         result.push_back(str.substr(start, itRes - start));
35         start = itRes;
36         ++start;
37     }
38 }
39 
40 int main()
41 {
42     string words;
43     vector<string> result;
44     getline(cin, words);
45     split(result, words, is_any_of(", .?!"));
46     for (auto item : result)
47     {
48         cout << item <<  ;
49     }
50 }

例如:输入hello world!Welcome to my blog,thank you!

技术分享

c++分割字符串(类似于boost::split)

标签:

原文地址:http://www.cnblogs.com/zhangbaochong/p/5755225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!