文字列ストリームを効果的にリセットする
C では、文字列ストリームは文字列を操作および解析するための貴重なツールです。文字列ストリームをリセットするには、開発者は str() メソッドを使用して基になる文字列をクリアします。ただし、このアプローチではストリームが完全にリセットされない可能性があります。
ケーススタディ
次のコード スニペットを考えてみましょう。
<code class="cpp">stringstream parser; parser << 5; short top = 0; parser >> top; parser.str(""); // Attempting to reset parser parser << 6; // Fails to insert 6 into parser short bottom = 0; parser >> bottom;</code>
目的は次のとおりです。パーサー ストリームをリセットし、新しい値を割り当てます。しかし、コードはパーサーへの 6 の挿入に予期せず失敗します。
エラーについて
問題の根本は不完全なリセットにあります。 str() メソッドは基になる文字列のみをクリアし、エラー フラグ (eof や failed など) は設定されたままになります。ストリームからの読み取りなどの後続の操作は、これらのフラグが原因で失敗します。
適切なリセット手法
文字列ストリームを効果的にリセットするには、文字列ストリームをクリアするだけでなく、文字列だけでなく、エラーフラグもリセットします。これは、clear() メソッドを使用して実現できます。
<code class="cpp">parser.str( std::string() ); parser.clear();</code>
str() と clear() の両方を呼び出すと、文字列が空の文字列にリセットされ、エラー フラグがクリアされ、以降の操作は成功します。
以上がC で文字列ストリームを効果的にリセットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。