|
|
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.
For example,
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.