stringstream

1.头文件:
#include<sstream>

 

2.了解定义

首先要知道 stringstream  ss(str) 是啥意思,创建存储str的副本的 stringstream 对象,其中str是 string 类型的对象。

 

3.了解ss.str()

streamstring在调用str()时,会返回临时的string对象。而因为是临时的对象,所以它在整个表达式结束后将会被析构。

如果需要进一步操作string对象,先把其值赋给一个string变量后再操作。

#include<iostream>
#include<sstream>
#include<cstring>
using namespace std;
int main()
{
    stringstream ss("abcdefg0123456789234567890gda1234567890145678901234567890123456789");
    //错误用法
    const char* cstr1 = ss.str().c_str();
    cout<<cstr1<<endl;
    //正确用法
    const string& str2 = ss.str();
    const char* cstr2 = str2.c_str();//转换成char类型字符串
    cout<<cstr2<<endl;
    return 0;
}

 

 

3.stringstream 的清空问题
 在C++中可以使用stringstream来很方便的进行类型转换,字符串串接,不过注意重复使用同一个stringstream对象时要 先继续清   空,而清空很容易想到是clear方法,而在stringstream中这个方法实际上是清空stringstream的状态(比如出错等),真 正清空内 容需要使用.str("")方法。
 
 
 
4.stringstream对象的使用
 
#include<iostream>
#include<sstream>
#include<cstring>
using namespace std;
int main()
{
    string a,b;
    while(getline(cin,a)){
        stringstream ss(a);//创建一个流
        cout<<ss.str()<<endl;
        while(ss>>b){//把值传递流中
            cout<<b<<endl;
        }

    }
    return 0;
}

 

5.stringstream 提供的转换格式

#include<iostream>
#include<sstream>
#include<cstring>
using namespace std;
int main()
{
    //将int类型读入ss 变为string类型
    int a=520;
    int b=521;
    stringstream ss;
    ss<<"a= "<<a<<'\n';//"a= "此处有空格,字符串流是通过空格判断一个字符串的结束
    ss<<"b= "<<b;
     cout<<ss.str()<<endl;


    //提取520 521保存为int 类型,当然c d 声明为string类型 ,那么这俩个字面常量相应的保存为string类型
    int c,d;
    string s;
    ss>>s>>c>>s>>d;
    cout<<c<<"  "<<d<<endl;


    return 0;
}

 

 

6.stringstream的清空

#include<iostream>
#include<sstream>
#include<cstring>
using namespace std;
int main()
{
    stringstream ss;
    string s;
    ss<<"fsajfsdfsa fdsa fdsaf";
    ss>>s;
    cout<<"size= "<<ss.str().length()<<endl;
    cout<<s<<endl;
    ss.str("");
    cout<<"size= "<<ss.str().length()<<endl;


    return 0;
}

 

7.作用:

 比sscanf()和sprintf()要好用 ;

其实就是类型转换可以转换任意类型 比如 int double string .....
 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值