変更後の std::cout の状態の復元
C では、入出力ストリームを操作すると、その状態が一時的に変更されることがあります。たとえば、以下のコード スニペットは std::cout の基数を 16 進数に変更します:
void printHex(std::ostream& x){ x <p>printHex から戻った後、std::cout への後続の出力では引き続き 16 進数が使用され、潜在的に予想外の結果。これに対処するには、std::cout の元の状態を復元する方法が必要です。</p><p><strong>解決策</strong></p><p>解決策には、std::ios_base::fmtflags の使用が含まれます。ストリームの書式設定フラグをキャプチャして復元するクラス。その方法は次のとおりです。</p><ol> <li>Include <iostream>または <ios>。</ios></iostream> </li> <li> <p>std::cout を変更する関数の先頭:</p> <pre class="brush:php;toolbar:false">std::ios_base::fmtflags f( cout.flags() );
これにより、現在の書式設定フラグが f 変数に保存されます。
ストリームを元の状態に戻した後の関数の終了時:
cout.flags( f );
これにより、最初にキャプチャされた書式設定フラグが復元されます。のfunction.
例
以下のコード スニペットでは、restoreCoutState 関数が std::cout:
の状態をキャプチャして復元します。void restoreCoutState(std::ostream& os){ std::ios_base::fmtflags f( os.flags() ); os
以上がフォーマットフラグを変更した後に std::cout を元の状態に戻すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。