ホームページ >バックエンド開発 >C++ >C で文字列ストリームを効果的にリセットするにはどうすればよいですか?

C で文字列ストリームを効果的にリセットするにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-04 19:32:01456ブラウズ

How to Effectively Reset a Stringstream in C  ?

文字列ストリームを効果的にリセットする

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 サイトの他の関連記事を参照してください。

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