Restore the state of std::cout after manipulating it

c++, iostream

Solution

you need to `#include <iostream>` or `#include <ios>` then when required:

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

//Your code here...

cout.flags( f );

You can put these at the beginning and end of your function, or check out this answer on how to use this with RAII.

Problem

Suppose I have a code like this: ``` 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.. } ``` My question is if there is any way to 'restore' the state of `cout` to its original one after returning from the function? (Somewhat like `std::boolalpha` and `std::noboolalpha`..) ? Thanks.

Original source

Related problems