ホームページ >バックエンド開発 >C++ >フォーマットフラグを変更した後に std::cout を元の状態に戻すにはどうすればよいですか?

フォーマットフラグを変更した後に std::cout を元の状態に戻すにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-02 15:11:13743ブラウズ

How Can I Restore the Original State of std::cout After Modifying its Formatting Flags?

変更後の 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 変数に保存されます。

  • 必要な変更を実行します。 std::cout.
  • ストリームを元の状態に戻した後の関数の終了時:

    cout.flags( f );

    これにより、最初にキャプチャされた書式設定フラグが復元されます。のfunction.

  • 以下のコード スニペットでは、restoreCoutState 関数が std::cout:

    の状態をキャプチャして復元します。
    void restoreCoutState(std::ostream& os){
        std::ios_base::fmtflags f( os.flags() );
        os 

    以上がフォーマットフラグを変更した後に std::cout を元の状態に戻すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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