和的区别

中istringstream,ostringstream,stringstream
中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 = "<   
}

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