なぜstd::strstreamは非推奨になったのですか?
2023-08-24 11:07:34
疑問点
最近、私は
std::strstream
は非推奨となり、代わりに
std::stringstream
. しばらく使っていなかったのですが、当時は必要なことをやってくれていたので、非推奨と聞いて驚きました。
私の質問は、なぜこのような決定がなされたのか、また、この決定によって
std::stringstream
にはない利点があるのでしょうか?
std::strstream
?
どのように解決するのですか?
この
strstream
が返され
char *
を返しますが、これがどのように割り当てられたのかがどこにも書かれていないため、管理するのが非常に困難でした。そのため、それを削除すべきか、その上で free() を呼び出すべきか、あるいはまったく別のことをすべきかを知ることは不可能でした。 本当に満足できる唯一の方法は、割り当てを解除するためにそれを
strstream
を経由して
freeze()
という関数を使っています。これは十分に非自明であったため、多くの人が勘違いしてしまいました。そのため
stringstream
は自分自身を管理する文字列オブジェクトを返すので、間違いの可能性はずっと低くなります。
という問題もありました。
ends
で文字列を終了させなければならないという問題もありましたが、デアロケーションの問題が非推奨の主な理由だと考えています。
関連
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] なぜテンプレートはヘッダーファイルでしか実装できないのですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] C++で仮想関数が必要な理由とは?
-
[解決済み] なぜこのプログラムは3つのC++コンパイラで誤って拒否されるのですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
-
[解決済み] 変数サイズのオブジェクトが初期化されないことがある c++
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない