1. ホーム
  2. c++

[解決済み] ストリングストリーム変数をクリアするには?

2022-03-19 13:14:02

質問

すでにいくつか試しています。

std::stringstream m;
m.empty();
m.clear();

の両方がうまくいきません。

解決方法は?

すべての標準ライブラリ型に対して、メンバ関数 empty() つまり、"中身を捨ててください"ではなく、"あなたは空ですか"という意味です。

clear() のメンバー関数が継承されています。 ios であり、ストリームのエラー状態をクリアするために使用されます。例えば、ファイルストリームがエラー状態を eofbit (エンドオブファイル) を呼び出すと clear() に戻すと、エラー状態が goodbit (エラーなし) となります。

の内容をクリアする場合 stringstream を、使っています。

m.str("");

を使用していますが、正しいです。

m.str(std::string());

の方が技術的には効率的です。 std::string コンストラクタは const char* . しかし、最近のコンパイラはどちらのケースでも同じコードを生成できるはずです - ですから、私ならより読みやすい方を選びます。