stringstream clear与str("")的问题 (转)

通过stringstream类来进行int 和string 的转换。
stringstream的头文件是sstream
使用stringstream对象简化类型转换

stringstream

我发现重复写入时会出现前面的东西还留在stream中。
这时,我首先想到的是clear()函数,这个函数是用来清空流的。
但通过string = stream.str()进行值传递操作时,旧的数据依然存在,
而通过stream>>string时,旧的数据就不会存在。


这是因为:

stringstream常用来安全的格式化若干个字符串,数值到一个缓冲区, 而不用担心溢出, 可以用来取代snprintf. 但是很多人都在使用stringstream的时候遇到因为stringstream内部的缓冲区没有正确的清空导致的问题.
那么把stringstream类内部的缓冲区正确的清空方式是什么呢? stringstream ss; 答案是: ss.str(“”)
方法. 另外,如果需要把格式化后的字符串通过>>输出到字符串, 必须每次都调用clear()方法! 所以, 保险期间, 每次缓冲区格式化后,
都通过clear(), str(“”) 两个函数都调用, 把stingstream类复位.
仅使用clear语句的情况

 

 


仅使用str(“”)的情况

 

 


同时使用clear与str(“”)的情况

 

 

转自:https://blog.csdn.net/jcq521045349/article/details/49888751

posted @   鸭子船长  阅读(107)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2017-08-31 E492: Not an editor command: ^M
2017-08-31 Building Vim from source(转)
2017-08-31 误删 libc.so.6的解决方法(转)
2017-08-31 CentOS安装glibc-2.14(转)
2017-08-31 CentOS 6.4 编译安装 gcc 4.8.1(转)
2015-08-31 整数中1出现的次数(从1到n整数中1出现的次数)
2015-08-31 连续子数组的最大和
点击右上角即可分享
微信分享提示