stringstream学习

本文介绍如何利用C++中的stringstream进行不同类型的数据转换与处理,包括int与string之间的转换、字符串分割等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上能找到一位大牛的讲解,我又自己实践了一下:

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正常转化;

我只测试了这些内容,如果还有的地方没涉及学习到,欢迎大佬留言相告~~




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值