包含头文件 #include <sstream>
初始化可以使用 clear()、 str( ) 赋值;
可以使用<<输入和>>输出
string s; stringstream ss; int a, b, c; getline(cin, s); ss.clear(); ss.str(s); ss >> a >> b >> c; //这里默认空格直接会分词,而且即使abc的类型不同还是可以的,相当于灵活类型转换
string s;
stringstream ss;
int n, i, sum, a;
cin >> n;
getline(cin, s); // 读取换行符
for (i=0; i<n; i++)
{
getline(cin, s);
ss.clear();
ss.str(s);
sum=0;
while (1)
{
ss >> a;
if ( ss.fail() ) break; //fail()判断是否到底
sum+=a;
}
cout << sum << endl;
}
//stringstream用于split很方便
string a, b, c, d;
string lines="adfa;asdfasd;fasdf;ccc";
stringstream line(lines); //可以直接初始化
getline(line, a, ‘f‘);
getline(line, b, ‘;‘);
getline(line, c, ‘;‘);
getline(line, d); //与不同的getline搭配
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
cout<<"d = "<<d<<endl;
还有个问题:这里默认的分词都是空格,那么如果是其他的比如逗号怎么做
原文:https://www.cnblogs.com/zhang-qc/p/9048977.html