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
标签:string,stream,clear,str,stringstream,缓冲区 来源: https://www.cnblogs.com/zl1991/p/16643874.html