すでにいくつか試してみましたが、
std::stringstream m;
m.empty();
m.clear();
どちらも機能しません。
ベストアンサー1
すべての標準ライブラリ型では、メンバー関数はempty()
コマンドではなくクエリです。つまり、「内容を捨ててください」ではなく「空ですか?」を意味します。
メンバーclear()
関数は から継承されios
、ストリームのエラー状態をクリアするために使用されます。たとえば、ファイル ストリームのエラー状態がeofbit
(end-of-file) に設定されている場合、 を呼び出すとエラー状態が(エラーなし)clear()
に戻ります。goodbit
の内容をクリアするにはstringstream
、次を使用します。
m.str("");
正しいですが、次の例を使用します。
m.str(std::string());
std::string
は、を受け取るコンストラクタの呼び出しを回避するため、技術的にはより効率的ですconst char*
。しかし、最近のコンパイラはどちらの場合でも同じコードを生成できるはずなので、より読みやすい方を選択します。