网上能找到一位大牛的讲解,我又自己实践了一下:
string s = "123 124 563 999999 0000 222 3333";
int a;
//stringstream ins(s);//自动以空格为分界点转换拆分字符到int
stringstream ins;//自动以空格为分界点转换拆分字符到int
ins << s;
while(ins>>a)
{
cout<<a<<endl;
}
如注释所述,stringstream很好用,只要你的字符串能被分割好就可以借助stringstream分割到动态数组(vector)中,加入有明显分割标记(如“/”或者某一个指定的字符时那也是非常好用的)因为我们有个replace函数,有多种输入格式,我只用过replace(string.start(),string.end(),'5',' ');字符‘5’,替换为空格字符
stringstream outs ;
outs << a;//自动识别输入类型,并且转换到相应的类型
outs >> s2;
s2 +="你好";
cout<<s2<<endl;
int类型转换为string类型,完美转化int b,c;//测试会不会转换消耗
float fa = 1.013;//自动识别输入类型,并且转换到相应的类型
stringstream f2i;
f2i << fa;
f2i>>a;
f2i>>b;f2i>>c;
cout<<a<<endl;//正常输出为1
cout<<b<<endl;//输出了0
cout<<c<<endl;//输出了垃圾数据
超范围传值转化会 传递垃圾数据,所以最好要明确转化多少次,多次的话用while就很好
stringstream f2s;
f2s<<fa;
//s2.clear();//和重新赋值s2类似,不必重新清空
string s3;
f2s>>s2;
s2 += "hello";
f2s>>s3;
cout<<s2<<endl;//正常转换
cout<<s3<<endl;//垃圾类似换行的字符
stringstream mores2i;
mores2i << s;
mores2i >> a >> b >> c;
cout<<a<<" "<<b<<" "<<c<<" ";//按照顺序从左到右依次赋值~~
浮点到string正常转化;
我只测试了这些内容,如果还有的地方没涉及学习到,欢迎大佬留言相告~~