您的位置:首页 > 其它

<sstream>和<strstream>的区别

2012-06-20 22:28 337 查看
<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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: