我最近发现std::strstream已弃用,而赞成std::stringstream。自从我使用它已经有一段时间了,但是它做了我当时需要做的事情,所以听到它被弃用感到惊讶。
我的问题是为什么要做出这个决定,而std::stringstream提供的好处是什么std::strstream呢?
我最近发现std::strstream已弃用,而赞成std::stringstream。自从我使用它已经有一段时间了,但是它做了我当时需要做的事情,所以听到它被弃用感到惊讶。
我的问题是为什么要做出这个决定,而std::stringstream提供的好处是什么std::strstream呢?
Answers:
该strstream返回了char *,这是非常难以管理,因为无处它指出它是如何被分配。因此,不可能知道应该删除它还是对其调用free()或完全执行其他操作。唯一真正令人满意的解除分配方法是strstream通过freeze()函数将其交还给via 。这显然不够明显,以至于很多人都弄错了。将stringstream返回一个String对象,其管理本身,这是远远不容易出错。
还有一个必须使用ends终止字符串的问题,但我相信释放问题是不赞成使用的主要原因。
Astrstream建立一个char *。Astd::stringstream建立一个std::string。我认为strstreams已被弃用,因为它可能会std::string自动阻止缓冲区溢出。