//编写函数vector<string> split(const string& s,const string& w),将s中以空白符分隔或以w分隔的子串存入向量,作为结果返回。
#include"../实践/std_lib_facilities.h"
vector<string> split(const string& s,const string& w)
{
string m = s;
for (int i = 0; i < m.size(); i++)
{
if (m[i] == w[0])
{
int q = i;
for (int j = 0; j < w.size(); j++,q++)
{
if (q==i&&m.size()-1 - q < w.size())break;
if (m[q] != w[j])break;
if (j == w.size() - 1)//如果遇到w则将其替换成空格。
{
m[i] = ' ';
m.erase(m.begin() + i + 1, m.begin() + i + w.size());
}
}
}
}
istringstream iss(m);
vector<string>strs;
string str;
while (iss>> str)strs.push_back(str);
return strs;
}
int main()
try
{
cout << "Please enter the line:";
string lines;
getline(cin, lines);
cout << '\n' << "Please enter the end word:";
string end_str;
getline(cin, end_str);
vector<string>end = split(lines,end_str);
for (int i = 0; i < end.size(); i++)
cout << end[i] << ' ';
}
catch (exception& e) {
cerr << "error: " << e.what() << '\n';
return 1;
}
catch (...) {
cerr << "Oops: unknown exception!\n";
return 2;
};
//--------------------------------------------------------------------
编写函数vector split(const string& s,const string& w),将s中以空白符分隔或以w分隔的子串存入向量,作为结果返回。
于 2023-04-30 09:28:58 首次发布