c++中使用串流时头文件strstream 和sstream有什么区别吗,两个头文件在其他方面又有

c++中使用串流时头文件strstream和sstream有什么区别吗,两个头文件在其他方面又有什么区别... c++中使用串流时头文件strstream 和sstream有什么区别吗,两个头文件在其他方面又有什么区别 展开
 我来答
tattackor
推荐于2017-09-15 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:878万
展开全部
<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处理中文也会有问题 。
ahcc08
2014-04-11 · 知道合伙人软件行家
ahcc08
知道合伙人软件行家
采纳数:11853 获赞数:51936
拥有丰富的软件开发经验。

向TA提问 私信TA
展开全部
在C++有两种字符串流,一种在sstream中定义,
另一种在strstream中定义。
它们实现的东西基本一样。
strstream里包含
class strstreambuf;
class istrstream;
class ostrstream;
class strstream;
它们是基于C类型字符串char*编写的
sstream中包含
class istringstream;
class ostringstream;
class stringbuf;
class stringstream;
class …….
它们是基于std::string编写的
因此ostrstream::str()返回的是char*类型的字符串
而ostringstream::str()返回的是std::string类型的字符串
在使用的时候要注意到二者的区别,一般情况下推荐使用std::string类型的字符串
当然如果为了保持和C的兼容,使用strstream也是不错的选择
追问
基于std::string编写的为什么返回char*类型的
追答
std::string的底层实现还是char*的操作

只不过是被封装了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式