<sstream> 中istringstream,ostringstream,stringstream
<strstream> 中istrstream,ostrstream,strstream
1.sstream所定义的类型用于读写存储在内存中的string对象
istringstream从string对象中读取,由istream派生而来
ostringstream写到string对象中去,由ostream派生而来
stringstream对string对象进行读写,由iostream派生而来
2.istrstream类用于执行C风格的串流的输入操作,也就是以字符串数组作为输入设备。
ostrstream类用于执行C风格的串流的输出操作,也就是一字符串数组作为输出设备。
strstream类同时可以支持C风格的串流的输入输出操作。
并且strstream里的东西已经被c++标准明确标明为“不要再使用”
3.istrstream不会自己释放内存,也就是如果你不调用freeze(false),在析构函数中内存是不会释放的。
并且istrstream处理中文也会有问题4.
stringstream stream;
string str;
while(1)
{
//clear(),这个名字让很多人想当然地认为它会清除流的内容。
//实际上,它并不清空任何内容,它只是重置了流的状态标志而已!但是字符串依然在stream流里。所以加载新的字符串必须是,clear和str一起使用
stream.clear();
// 去掉下面这行注释,清空stringstream的缓冲,每次循环内存消耗将不再增加!
stream.str("");
stream<<"sdfsdfdsfsadfsdafsdfsdgsdgsdgsadgdsgsdagasdgsdagsadgsdgsgdsagsadgs";
stream>>str;
//看看每次循环,你的内存消耗增加了多少!
cout<<"Size of stream = "<<stream.str().length()<<endl;
}