程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> c++若何朋分字符串示例代碼

c++若何朋分字符串示例代碼

編輯:關於C++

c++若何朋分字符串示例代碼。本站提示廣大學習愛好者:(c++若何朋分字符串示例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是c++若何朋分字符串示例代碼正文


話不多說,直接上代碼

假如須要依據單一字符朋分單詞,直接用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++的時刻有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved