1. ホーム
  2. c++

[解決済み] std::coutを操作した後にstd::coutの状態を復元する

2022-06-30 06:30:07

質問

このようなコードがあったとします。

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::boolalphastd::noboolalpha ..) ?

ありがとうございます。

どのように解決するのですか?

あなたは #include <iostream> または #include <ios> で、必要なときに

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

//Your code here...

cout.flags( f );

これらを関数の最初と最後に置くか、あるいは、チェックアウトして この答え でこれを使う方法については RAII .