stringstream读取字符串

stringstream 流

首先引入头文件

1
#include <sstream>

然后定义一个stringstream对象,用来输入输出,这个对象既可以把数字变成字符串,也可以把字符串变成数字,甚至可以分割被空格、制表符等符号分割的字符串(简单来说就是去空格和换行)

1
2
3
4
5
6
字符串转数字:
stringstream stream;
string result="10000";
int n=0;
stream<<result;
stream>>n;//n等于10000
1
2
3
4
5
6
数字转字符串:
stringstream stream;
string result;
int i = 1000;
stream << i; // 将int输入流
stream >> result; // 从stream中抽取前面插入的int值
1
2
3
4
5
stringstream构造函数用法:
string result="10000";
stringstream stream(result);(可以是字符串也可以是数字,总之后面直接输入到目标变量里面)
int n=0;
stream>>n;//n等于10000

这里我们重点讲下分割,去空格和换行(因为stringstream是通过空格判断一个字符串的结束):

1
2
3
4
5
6
7
8
9
10
11
12
13
string str="i am a boy";  
stringstream stream(str);
string s; //存储不含空格和换行的字符串
while(stream>>s)
{
cout<<s<<endl;
}

输出结果:
i
am
a
boy

这里补充一点小知识,我们在使用getline(cin,str)之前,如果前面使用了cin >> s,那么我们必须xin.ignore()

1
2
3
4
5
string s;
cin >> s;
cin.ignore(); // 必须使用,要不然getline读不到东西
string str;
getline(cin, str);