StringStream のクリアとリセット
C では、 stringstream は文字列オブジェクトに関連付けられた入出力バッファです。ストリーム操作を使用して文字列を操作できます。
問題ステートメント:
次のコードを検討してください:
<code class="cpp">stringstream parser; parser << 5; short top = 0; parser >> top; parser.str(""); // Attempt to reset parser parser << 6; // Doesn't put 6 into parser short bottom = 0; parser >> bottom;</code>
試行すると問題が発生します。 parser.str("") を使用して内容をクリアした後に文字列ストリームを再利用します。
解決策:
文字列ストリームを適切にクリアするには、次の 2 つの手順を実行する必要があります。
<code class="cpp">parser.str( std::string() ); parser.clear();</code>
説明:
最初の >>操作は文字列ストリームから整数 5 を読み取り、文字列の終わりに達したため eof ビットを設定します。後続の 6 の読み取り試行は、eof ビットがまだ設定されているため失敗します。基礎となる文字列をリセットし、フラグをクリアすると、ストリームが初期構成に復元され、後続の操作が成功できるようになります。
以上がC で StringStream を適切にクリアおよびリセットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。