加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c++如何分割字符串示例代码

发布时间:2020-12-16 05:20:47 所属栏目:百科 来源:网络整理
导读:话不多说,直接上代码 如果需要根据单一字符分割单词,直接用getline读取就好了,很简单 #include iostream #include vector #include string #include sstream using namespace std; int main() { string words; vectorstring results; getline(cin,words);

话不多说,直接上代码

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

 #include <iostream>
 #include <vector>
 #include <string>
 #include <sstream>
 using namespace std;
 
 int main()
 {
   string words;
   vector<string> results;
   getline(cin,words);
   istringstream ss(words);
   while (!ss.eof())
   {
     string word;
     getline(ss,word,',');
     results.push_back(word);
   }
   for (auto item : results)
   {
     cout << item << " ";
   }
 }

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

 #include <iostream>
 #include <vector>
 #include <string>
 #include <sstream>
 using namespace std;
 
 vector<char> is_any_of(string str)
 {
   vector<char> res;
   for (auto s : str)
     res.push_back(s);
   return res;
 }
 
 void split(vector<string>& result,string str,vector<char> delimiters)
 {
   result.clear();
   auto start = 0;
   while (start < str.size())
   {
     //根据多个分割符分割
     auto itRes = str.find(delimiters[0],start);
     for (int i = 1; i < delimiters.size(); ++i)
     {
       auto it = str.find(delimiters[i],start);
       if (it < itRes)
         itRes = it;
     }
     if (itRes == string::npos)
     {
       result.push_back(str.substr(start,str.size() - start));
       break;
     }
     result.push_back(str.substr(start,itRes - start));
     start = itRes;
     ++start;
   }
 }
 
 int main()
 {
   string words;
   vector<string> result;
   getline(cin,words);
   split(result,words,is_any_of(",.?!"));
   for (auto item : result)
   {
     cout << item << ' ';
   }
 }

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

以上就是c++如何分割字符串示例代码的全部内容,大家学会了吗?希望本文对大家使用C++的时候有所帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读