一、stringstream的用法
#include<sstream>
1. 第一种构造方式
两个字符串直接拼接在了一起
ss1 << "fre";
2. 第二种构造方式
string str("asd");
stringstream ss2(str);
//会被第一种方式覆盖
ss2 << "r";
3.不被覆盖的方法
ostringstream ss("1 2 3 4 ", std::ios_base::ate);
// append 方式追加
修改、清空 stringstream 内容
stringstream 的内容可以通过 str() 函数进行修改、清空:
//初始化
stringstream ss("hello string");
// 修改内容
ss.str("hello stringstream");
// 清空内容
ss.str("");
二、stringstream的用途
利用 stringstream 去除字符串空格
stringstream 默认是以空格来分割字符串的,利用 stringstream 去除字符串空格非常方便:
stringstream ss("hello string and stringstream");
string str;
// 注意: stringstream 是一个单词一个单词 ”流入“ string 的
ss >> str
利用 stringstream 指定字符分割字符串
需要与 getline()
函数搭配使用
getline()的原型是
istream& getline ( istream &is , string &str , char delim );
其中
istream &is
表示一个输入流,
例如,可使用cin;string str ; getline(cin ,str)
也可以使用 stringstream.
stringstream ss(“test#”) ; getline(ss,str)
char delim
表示遇到这个字符停止读入,通常系统默认该字符为’\n’,也可以自定义字符
string source = "abc,123,<!>";
stringstream ss(source);
cout<<ss.str()<<endl;
string str;
while(getline(ss, str, ','))
cout<<str<<endl;
/*输出:
abc,123,<!>
abc
123
<!>
*/
类型转换
- 使用 stringstream 将数字转换为字符串的例子:
int num = 123;
stringstream ss;
ss << num; // 将整数放入流中
string str = ss.str(); // 使用str()函数 从流中提取字符串
cout << str << endl; // 输出:123
- 反过来,也可以将字符串转换为数值类型:
string str = "456";
stringstream ss(str); // 初始化stringstream
int num;
ss >> num; // 从流中提取整数
cout << num << endl; // 输出:456
``