查了一下相关文档:C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含<sstream>这个头文件。
istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。
strstream类同时可以支持C风格的串流的输入输出操作。
istringstream的构造函数原形如下:
istringstream::istringstream(string str);
它的作用是从string对象str中读取字符。
具体用一个例子来介绍
# include<iostream>
# include<string>
# include<vector>
# include<algorithm>
# include<sstream>
using namespace std;
int main(){
string s;
while(getline(cin,s)){
vector<string> strings;
istringstream ss(s);
string tmp;
while(getline(ss,tmp,',')){
strings.push_back(tmp);
}
sort(strings.begin(),strings.end());
for(int i=0;i<strings.size()-1;i++){
cout<<strings[i]<<',';
}
cout<<strings.back()<<endl;
}
return 0;
}
其中getline(cin,s)表示读一行数据到字符串s中,此时这个字符串是一个整体
可以istringstream 的实例ss看成是cin,执行getline(ss,tmp,',')就和上面类似,只不过经过istringstream 之后,字符串整体被分割成一个一个的字符串,存到tmp中.
网友评论