1. ホーム
  2. c++

なぜstd::strstreamは非推奨になったのですか?

2023-08-24 11:07:34

疑問点

最近、私は std::strstream は非推奨となり、代わりに std::stringstream . しばらく使っていなかったのですが、当時は必要なことをやってくれていたので、非推奨と聞いて驚きました。

私の質問は、なぜこのような決定がなされたのか、また、この決定によって std::stringstream にはない利点があるのでしょうか? std::strstream ?

どのように解決するのですか?

この strstream が返され char * を返しますが、これがどのように割り当てられたのかがどこにも書かれていないため、管理するのが非常に困難でした。そのため、それを削除すべきか、その上で free() を呼び出すべきか、あるいはまったく別のことをすべきかを知ることは不可能でした。 本当に満足できる唯一の方法は、割り当てを解除するためにそれを strstream を経由して freeze() という関数を使っています。これは十分に非自明であったため、多くの人が勘違いしてしまいました。そのため stringstream は自分自身を管理する文字列オブジェクトを返すので、間違いの可能性はずっと低くなります。

という問題もありました。 ends で文字列を終了させなければならないという問題もありましたが、デアロケーションの問題が非推奨の主な理由だと考えています。