输入输出错误如何处理输入字符串中的逗号分隔符或者其他分割符号?

 

getline分割字符串的原型说明:

getline函数用于读取整行字符串。
getline()的原型是istream& getline ( istream &is , string &str , char delim );
参数解释:
(1)istream &is 表示一个输入流,例如cin;
(2)string&str表示把从输入流读入的字符串存放在这个字符串str中;
(3)char delim表示遇到这个字符停止读入,在不设置的情况下系统默认该字符为’\n’,因此getline函数遇到换行符会自动结束读取操作。
(我们可以通过改变函数中第三个终止符参数对字符串进行分割。)
先将读取的字符串保存在stringstream流对象中,用getline()函数读取字符串,遇到指定的终止符切割字符串。

stringstream是一种字符串流,处理思路是先把输入的数据变成字符串流,保存在流对象中,然后用getline的分割方法进行处理

 1 #include <iostream>
 2 #include "string"
 3 #include<sstream>
 4 using namespace std;
 5 int main()
 6 {
 7     string txt="/123/456/789/";
 8     stringstream ss(txt);
 9     string str;
10     while(getline(ss,str,'/')){
11         cout<<str<<endl;
12     }
13     return 0;
14 }

 此题的处理结果如下:

 1 #include <iostream>
 2 #include "string"
 3 #include<sstream>
 4 #include "vector"
 5 #include "algorithm"
 6 using namespace std;
 7 int main()
 8 {
 9     //string txt="/123/456/789/";
10     //stringstream ss(txt);
11     string str;
12   
13     while(getline(cin,str))
14     {
15        stringstream ss(str);
16         string text;
17         vector<string> v;
18         while(getline(ss,text,','))
19         {
20             v.push_back(text);
21         //    cout<<text<<endl;
22 
23         }
24         sort(v.begin(),v.end());
25         for(int i=0;i<v.size();i++)
26         {
27             if(i<v.size()-1)
28             {
29                 cout<<v[i]<<',';
30             }
31             else
32             {
33                 cout<<v[i]<<endl;
34             }
35         }
36         
37     }
38     
39     return 0;
40 }

 

posted @ 2022-02-15 19:44  技术笔记记录  阅读(124)  评论(0)    收藏  举报