stringstream实用用法总结

本文介绍了C++中的stringstream类,用于流的输入输出操作,强调其在数据类型转换中的优势,包括自动转换和安全性。讲解了常用的函数如str()和构造方式,并展示了如何用stringstream进行字符串分割。
摘要由CSDN通过智能技术生成

简介:

    <sstream> 定义了三个类:istringstream、ostringstream 和 stringstream,分别用来进行流的输入、输出和输入输出操作。本文以 stringstream 为主,介绍流的输入和输出操作。

        <sstream> 主要用来进行数据类型转换,由于 <sstream> 使用 string 对象来代替字符数组(snprintf 方式),避免了缓冲区溢出的危险;而且,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符号的问题。简单说,相比 C 编程语言库的数据类型转换,<sstream> 更加安全、自动和直接.

常用的函数:

stringstream.str();转化为字符串;所以可以用来输出stringstream

stringstream.str("")让流清空.

自动实现数据类型的转换:
 

在 C++ 中,字符串流(stringstream)是一种特殊的流类,它允许将字符串作为输入和输出流进行处理。字符串流提供了一种方便的方式,可以将字符串与其他基本类型进行转换、拼接、解析等操作。

string s="aaa";
    stringstream line;
    line<< s;
    line << 1;//int
    line<<0.12; //float
    line<<'b'; //char
    cout<<line.str()<<endl;
    //结果为:aaa10.12b

 两种构造方式:

string s="aaa";
    //1.
    stringstream line;
    line<< s;
    
    //2.
    stringstream line(s);

区别在于:第二种方式在输入到stingstream的时候,之前的s会被覆盖;
所以一帮使用第一种构造方式.
比如:

        

string s="aaa";
    //1.
    stringstream line;
    line<< s;
    
    //2.
    stringstream line(s);

    line << 1;
    
    //第一种的结果是:aaa1;
    //第二种的结果是:1aa;

 分割字符串:
stringstream 默认是以空格来分割字符串的,利用 stringstream 去除字符串空格非常方便:

for(int i=1;i<=n;i++)
	{
		getline(cin,s);//读入一整行
		stringstream line;
        line  << s;//s输入到流中
		while(line>>a[cnt])cnt++;//从流中输出到数组中,这样就过滤掉了空格
	}

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值