std::cout を操作した後に状態を復元する 質問する

std::cout を操作した後に状態を復元する 質問する

次のようなコードがあるとします。

void printHex(std::ostream& x){
    x<<std::hex<<123;
}
..
int main(){
    std::cout<<100; // prints 100 base 10
    printHex(std::cout); //prints 123 in hex
    std::cout<<73; //problem! prints 73 in hex..
}

cout私の質問は、関数から戻った後にの状態を元の状態に「復元」する方法があるかどうかです。( や のようなものstd::boolalphaですかstd::noboolalpha?)

ありがとう。

ベストアンサー1

必要に応じて、#include <iostream>または#include <ios>必要に応じて:

std::ios_base::fmtflags f( cout.flags() );

//Your code here...

cout.flags( f );

これらを関数の最初と最後に配置したり、チェックアウトしたりすることができますこの答えこれをどのように使用するかについてRAII

おすすめ記事