sttingstream是在#include<sstream>里定义的,实质是c++中的一个类,也像是一种数据类型,而我们经常看见的stringstream ss中的ss只是一种变量而已,你可以随便写一个;初始化就是stringstream(line),line就是string类型的变量;在后面对stringstream赋值就是ss<<line;将stringstream导出就是ss>>line;
初始化 | stringstream(line),line就是string类型的变量 |
赋值 | ss<<line |
导出 | ss>>line |
关于stringstream的具体应用
1.转换类型
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main()
{
string line;int x;
while (getline(cin, line))
{
stringstream ss;
ss << line;
ss >> x;
cout << x << endl;
}
return 0;
}
它可以直接将字符转成数字,eg:字符'1'直接变成1;学过c的都知道字符变成数字要减去相应的ASIIC码,但c++不需要;
2.数据切分
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main()
{
string line;int x;
while (getline(cin, line))
{
int sum = 0;
stringstream ss;
ss << line;
while (ss >> x)//ss >> x就像是cin>>一样遇到空格就停止输入
sum += x;
cout << sum << endl;
}
return 0;
}
正是因为ss>>像cin>>一样遇到空格就停止输入,就可以利用这一特点进行数据分割
3.选择特定符号进行数据分割
#include<iostream>
#include<cstring>
#include<sstream>
using namespace std;
int main()
{
string s;
cin >> s;
stringstream ss(s);
while (getline(ss, s, '/'))
{
cout << s << " ";
}
return 0;
}