同这位博主遇到的问题类似,博主也给出了以下分析:
https://blog.youkuaiyun.com/l631068264/article/details/25115917
在for循环中每次调用strStream.clear()是希望在每次使用完strStream之后清理strStream占用的资源,但stringstream的clear方法并没有真正地释放strStream占用的空间,这样strStream所占用的空间一直在增长。当size较大时,strStream消耗的内存迅速增长,可能出现严重问题。
解决方法
在多次转换中,使用同一个stringstream对象,需要使用其对象方法str来重置stringstream的buffer,这样能确保stringstream占用的内存不会越积越多。
举例
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main(){
stringstream ss;
string str;
ss<<1;
ss>>str;
ss<<2;
ss>>str;
cout<<str<<endl;
system("pause");
}
其输出值是1,而不是2。
应该添加:strStream.str("");//清空缓冲区。