1.类型转换
stringstream stream;
string result = "10000";
int n = 0;
stream << result;//可以看作将result输入stream的缓冲区
stream >> n;//n等于10000,将stream输入n(cin)
2.用于储存一行string信息
用到getline()函数时,string类型不可用于缓冲,用到stringstream类型,一般用于分开存储用,分开的数据,如下是用于存储形如"[1,2,3,4,5,6,7]"的二叉树信息。
void input() {
string strLine, str;
getline(cin, strLine);
int x = strLine.find("[");
int y = strLine.find("]");
string index = strLine.substr(x + 1, y - x - 1);
stringstream ss(index);
while (getline(ss, str, ',')) {
zz.push_back(str);
}
}
3.stringstream中的clear()和str()成员函数
**clear函数是ios类的成员函数,用于清除标志位,这点在多个stringstream对象构造和使用时一定要进行clear,不然之前的缓冲就停留在输入输出流中。stringstream类型对象构造麻烦,一般只用一个。
str()函数是stringstream的成员函数,使用无参数函数时返回一个string对象,使用字符串变量作为参数时,表示将一个字符串初始化给该对象的私有变量。**
string str("How are you? 123 1 4.368");
stringstream ss(str);
cout << ss.str() << endl;
string tmp;
for (int i = 0; i < 3; i++) {
ss >> tmp;
cout << tmp << " ";
}