stringstream坑(重用时值未更新)

同这位博主遇到的问题类似,博主也给出了以下分析:
https://blog.csdn.net/l631068264/article/details/25115917

在for循环中每次调用strStream.clear()是希望在每次使用完strStream之后清理strStream占用的资源,但stringstream的clear方法并没有真正地释放strStream占用的空间,这样strStream所占用的空间一直在增长。当size较大时,strStream消耗的内存迅速增长,可能出现严重问题。

解决方法

在多次转换中,使用同一个stringstream对象,需要使用其对象方法str来重置stringstream的buffer,这样能确保stringstream占用的内存不会越积越多。

举例

#include
#include
#include
using namespace std;
int main(){
      stringstream ss;
      string str;
      ss<<1;
      ss>>str;
      ss<<2;
      ss>>str;
      cout<

其输出值是1,而不是2。

应该添加:strStream.str("");//清空缓冲区。

你可能感兴趣的:(c++)