<sstream>和<strstream>的区别

<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;
  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值