带空格或逗号的字符串和基础数据类型的互相转换

来源:互联网 发布:js ajax视频教程 编辑:程序博客网 时间:2024/06/08 14:40

知识点:

istream& getline ( istream& is, string& str, char delim )与istream& getline ( istream& is, string& str );

第一个参数是输入流,可以是:cin、stringstream、istringstream

第二个参数存放从输入流中读出的字符串:string类型

第三个参数(默认是空格):

调用者指定的分隔符,读到调用者指定的分隔符时,此时将分隔符之前的字符拷贝到缓冲区中,但分隔符本身不拷贝进去,并且下次读操作将从分隔符后的下一个字符开始。

#include<iostream>#include<sstream>#include<string>#include<vector>using namespace std;void myreplace(string &str, char a, string b){int len = str.size();for (int i = 0; i < len; i++){if (str[i] == a){str.replace(i, 1, b);len = str.size();}}}int main(){string sin1;stringstream ss1;stringstream ss2;double num=100.2222;getline(cin, sin1);//特别注意,getline的用法sin1 += " bi add ";ss2 << num;  //利用stringstream将所有的基础数据类型,装换成字符串(  ss2.str()  )sin1 += ss2.str();cout << sin1 << endl;ss1.clear();ss1.str("");ss1.str(sin1);//利用stringstream,将字符串根据空格切割成字符串、基础数据类型int a;double b;string s;ss1 >> a >> s >> s >> b;   //将stringstream包含的对象按照,空格进行切割cout << a << endl;cout << b << endl;string str = "11,22,33,44,55";//对于不是用空格进行分割的字符串,首先自己定义函数,将逗号替换成空格cout << str << endl;myreplace(str,',', " ");//自己定义的函数,替换成空格,就可以切割包含的数字了cout << str << endl;vector<string> vec;string temp;string str3 = "11,22,33,44,55";//利用getline+stringstream切割用‘,’分割的字符串stringstream ss3(str3);while (getline(ss3, temp, ',')){vec.push_back(temp);}system("pause");return 0;}


原创粉丝点击