[解決済み] ostringstreamを再利用するには?
2022-08-15 02:03:50
質問
ostringstream (およびその下のバッファ) を消去して再利用し、アプリケーションがそれほど多くの割り当てを行う必要がないようにしたいと思います。 どのようにオブジェクトを初期状態に戻すのですか?
どのように解決するのですか?
過去にclearとstrを連続して使ったことがあります。
// clear, because eof or other bits may be still set.
s.clear();
s.str("");
これで入力と出力の両方の文字列ストリームに対して処理が行われました。あるいは、手動でクリアし、適切なシーケンスをbeginにシークすることもできます。
s.clear();
s.seekp(0); // for outputs: seek put ptr to start
s.seekg(0); // for inputs: seek get ptr to start
によって行われるいくつかの再割り当てを防ぐことができます。
str
によって行われる再割り当てを防ぐことができます。結果はこのようになります。
std::ostringstream s;
s << "hello";
s.seekp(0);
s << "b";
assert(s.str() == "bello");
文字列をc関数に使用したい場合は
std::ends
のように、終端をNULLにしてください。
std::ostringstream s;
s << "hello";
s.seekp(0);
s << "b" << std::ends;
assert(s.str().size() == 5 && std::strlen(s.str().data()) == 1);
std::ends
は、非推奨の
std::strstream
これは、スタック上に割り当てた文字配列に直接書き込むことができました。終端の NULL を手動で挿入する必要がありました。しかし
std::ends
が非推奨なのは、上記のようなケースでまだ使えるからだと思います。
関連
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] jQueryで多段式フォームをリセットする
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】ファイルから整数を読み込んで配列に格納する C++ 【クローズド
-
[解決済み】Enterキーを押して続行する
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み】変数やフィールドがvoid宣言されている
-
[解決済み] ostringstreamをクリアする方法 [重複]。
-
[解決済み] ストリングストリーム変数をクリアするには?