>` C 11 以降で抽出失敗時にターゲット変数をゼロにしますか? " />
Stroustrup の「TC PL、第 3 版」から引用された一節で、著者は次のように述べています。ただし、stringstream >> の操作が行われると v がゼロになるため、この例はこのステートメントと矛盾します。
矛盾した動作の説明
この明らかな矛盾を理解する鍵は、C 11 の前後での抽出演算子の動作の違いにあります。
C 前11
C 11 より前では、>> 抽出が失敗した場合、v の値は変更されず、failbit フラグが設定されていました。
C 11 以降C 11 では、 >> 更新された仕様に従って、抽出が失敗した場合は、v とフェイルビットに 0 が書き込まれます。フラグが設定されています。
std::numeric_limits::max() やオーバーフロー保護を備えた型の場合std::numeric_limits::min() が v に書き込まれ、フェイルビット フラグが設定されます。
v の値は最初は123.
v にワードを読み取ろうとした後 (失敗)、v の値は 0 に設定されます。
以上がC 11 以降で抽出失敗時に「stringstream >>」がターゲット変数をゼロにするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。