stringstream流分割空格隔开的字符串
先看下C++流的总体框架 so beautiful
demo
#include<sstream>
using namespace std;
int main()
{
stringstream ss("abc def ghi");
string s1, s2, s3;
ss >> s1 >> s2 >> s3;
cout << s1 << endl;
cout << s2 << endl;
cout << s3 << endl;
return 0;
}
stringstream本质是一个流,类似一个缓冲区,ss>>s1>>s2;相当于把ss流中的内容按空格结束,拿出来并放到s1,s2中了;
可以看到string流可以流式录入字符串,流式输出字符串到子字符串s1,s2,s3,默认以空格分隔;
那么我们经常以特定字符分割字符串,怎么操作?配合getline一起使用;
配合getline指定特定字符分割
istream& getline (istream& is, string& str, char delim);
//1.数据源流 is
//2.读入string
//3.分隔符,可以指定(默认为'\n'一行)
#include<sstream>
using namespace std;
int main()
{
//以*为分隔符,切割一整段字符串,分别放入string数组中储存,可进一步处理子串;
stringstream ss("abc*def*ghi");
vector<string>v;
string line;
while (getline(ss, line, '*')) {
v.push_back(line);
}
for (auto& e : v) {
cout<<e<<endl;
}
return 0;
}