istringstream()和getline()实现字符串分割

2020-09-10  本文已影响0人  吵吵人

查了一下相关文档: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中.

上一篇 下一篇

猜你喜欢

热点阅读