我最近发现不赞成使用std::strstream,而建议使用std::stringstream。自从我使用它已经有一段时间了,但是它做了我当时需要做的事情,所以听到它被弃用感到惊讶。

我的问题是为什么要做出此决定,而std::stringstream提供了std::strstream缺少的哪些好处?

最佳答案

strstream返回了一个很难管理的char *,因为没有地方说明如何分配。因此,不可能知道应该删除它还是对其调用free()或完全执行其他操作。唯一真正令人满意的解除分配方法是通过strstream函数将其交还给freeze()。这显然不够明显,以至于很多人都弄错了。 stringstream返回一个可自我管理的字符串对象,该对象很少出错。

还有一个问题,必须使用ends终止字符串,但是我认为释放问题是弃用的主要原因。

关于c++ - 为什么不推荐使用std::strstream?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2820221/

10-11 05:00