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++的時刻有所贊助。