Integers are normally inserted and extracted in decimal notation, but this is controlled by flag bits. If none of ios::dec, ios::hex, or ios::oct are set the insertion is done in decimal but extractions are interpreted according to the C++ lexical conventions for integral constants. If ios::showbase is set then insertions will convert to an external form that can be read according to these conventions.
int x = 64; cout << dec << x << " " << hex << x << " " << oct << x << endl ; cout.setf(ios::showbase,ios::showbase) ; cout << dec << x << " " << hex << x << " " << oct << x << endl ;will result in the lines:
64 40 100 64 0x40 0100
setf() with only one argument turns the specified bits on, but doesn't turn any bits off.
Reading the lines shown above could be done by:
cin >> dec >> x >> hex >> x >> oct >> x >> resetiosflags(ios::basefield) >> x >> x >> x ;The value stored in x will be 64 for each extraction. The resetiosflags() manipulator turns off the specified bits in the flags.