and*_*and 69 c++ stringstream strstream
我最近发现std::strstream有人不赞成使用std::stringstream.自从我使用它已经有一段时间了,但它确实做了我当时需要做的事情,所以听到它的弃用感到惊讶.
我的问题是为什么做出这个决定,以及没有std::stringstream提供哪些好处std::strstream?
小智 93
该strstream返回了char *,这是非常难以管理,因为无处它指出它是如何被分配.因此,无法知道您是应该删除它还是在其上调用free()或完全执行其他操作.关于唯一真正令人满意的方式来释放它是把它回strstream通过freeze()功能.这是非常明显的,很多人都弄错了.将stringstream返回一个String对象,其管理本身,这是远远不容易出错.
还有一个问题是必须使用ends终止字符串,但我认为解除分配问题是弃用的主要原因.
APr*_*mer 15
更容易理解内存管理.(有人能记得谁负责释放分配的内存以及在哪些情况下?)
(请注意,由于strstream仍然提供其他地方无法提供的东西,它将继续存在于C++ 0X中 - 至少上次我检查它的草稿时).
Ken*_*oom 11
A strstream建立一个char *.A std::stringstream建立一个std::string.我认为strstreams已被弃用,因为缓冲区溢出的可能性,这是std::string自动阻止的.
从不止一次的个人角度来看,我看到了模糊的内存损坏,需要花费数天或数周的时间来追踪并最终降低使用率strstream.一旦它被stringstream腐败所取代,消失了,我没有再问任何问题了!这对我来说已经足够了.