-
C++学习笔记-stringstream[字符串流]
-
stringstream类简介:
头文件:#include<sstream>
主要函数:
a. bool eof() :字符串流为空时返回 true
b. clear() :清空字符串流
用途:
在一些编程应用中,可能有时候会给一整串信息由空格间隔着的字符串,这个时候如果用原有的string,char* 要分割这些信息都很麻烦,而C++提供字符串流,可以有效分割字符串。
-
stringstream用法:
先言:
对于C++的流不陌生,其实就是用 << >> 对数据进行传输
声明:
先声明再赋值,或在构造流时便赋值
//1
string str;
cin>>str;
stringstream ss;
ss<<str;
//2
string Fix_Data = "1998.9 + 26 = MyHeart";
stringstream _ss(Fix_Data);
切割串信息:
用到前面的eof,当然是切割到字符串流空就结束
//切割流
stringstream ss;
ss.clear(); //清空流
string Str;
getline(cin, Str);
ss << Str;
while (!ss.eof())
{
string Tempstr;
ss >> Tempstr;
cout << Tempstr << endl;
}
ss.clear(); //清空流
样例输入:negative seven hundred twenty nine
样例输出:negative
seven
hundred
twenty
nine
养成好习惯,切割前后都用 clear()对流进行清空
转换成任意类型:
切割流并不是字符串单一流向,还可以转换成浮点型,整型等等
//类型互换
string Fix_Data = "1998.9 + 26 = MyHeart";
stringstream _ss(Fix_Data);
double Birth;
_ss >> Birth;
cout << "Birth: "<<Birth << endl;
char Signal;
_ss >> Signal;
cout << "Signal: " << Signal<<endl;
int Day;
_ss >> Day;
cout << "Day: " << Day << endl;
_ss >> Signal;
cout << "Signal: " << Signal << endl;
char Sad[10];
_ss >> Sad;
cout << "Sad: " << Sad << endl;
样例输出:Birth: 1998.9
Signal : +
Day : 26
Signal : =
Sad : MyHeart