ホームページ >バックエンド開発 >C++ >C で StringStream を適切にクリアおよびリセットするにはどうすればよいですか?

C で StringStream を適切にクリアおよびリセットするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-04 09:17:02391ブラウズ

How Do You Properly Clear and Reset a StringStream in C  ?

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 つの手順を実行する必要があります。

  1. parser.str(std::string()) を使用して基礎となる文字列を空の文字列にリセットします。
  2. parser.clear() を使用して失敗フラグと eof フラグをクリアします。
<code class="cpp">parser.str( std::string() );
parser.clear();</code>

説明:

最初の >>操作は文字列ストリームから整数 5 を読み取り、文字列の終わりに達したため eof ビットを設定します。後続の 6 の読み取り試行は、eof ビットがまだ設定されているため失敗します。基礎となる文字列をリセットし、フラグをクリアすると、ストリームが初期構成に復元され、後続の操作が成功できるようになります。

以上がC で StringStream を適切にクリアおよびリセットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。