类的构造函数
两种构造方式
1.创建对象时直接输入字符串
stringstream ss("hello world");
2.使用字符串变量初始化
string str = "hello world";
stringstream ss(str);
输出字符串
ss.str()
,通过调用str()
函数进行输出
创建stringstream的不同之处
1.如果通过流方式创建(追加的方式)
stringstream ss;
ss << "123";
ss << "456";
cout << ss.str() << endl;
结果是
123456
2.如果通过构造函数,再用流方式
stringstream ss("asdf");
cout << ss.str() << endl;
ss << "1";
cout << ss.str() << endl;
ss << "23";
cout << ss.str() << endl;
结果是
asdf
1sdf
123f
对stringstream的内容进行修改
通过str()
函数进行修改、清空
//原来为
stringstream ss("hello world");
//修改为 hello stringstream
ss.str("hello stringstream");
//清空
ss.str("");
stringstream的使用
利用stringstream去除字符串空格
stringstream ss("hello world and acwing");;
string str;
//stringstream默认是以空格分割字符串的,stringstream的单词一个一个流入string中
while (ss >> str){
cout << str << endl;
}
利用stringstream根据指定字符分割字符串
类似python中split
此时需要利用getline
上面描述了利用 stringstream 去除字符串空格,其实就是利用空格来分割字符串,同样,也可以指定其他字符对字符串进行分割,这需要与 getline() 函数搭配使用,下面以逗号分割字符串为例:
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);
string str;
while (getline(ss, str, ',')){
cout << str << endl;
}
利用stringstream进行类型转换
例如整数转字符串
int num = 123;
stringstream ss;
ss << num;
string str = ss.str();
字符串转整数
string str = "123";
stringstream ss(str);
int num;
ss >> num;