Bruce Eckel's Thinking in C++, 2nd Ed | Contents | Prev | Next |
manipulator
|
effect
|
---|---|
Indicate
the numeric base (dec, oct, or hex) when printing an integral value. The format
used can be read by the C++ compiler.
|
|
Show
plus sign (+) for positive values
|
|
Display
uppercase A-F for hexadecimal values, and E for scientific values
|
|
Show
decimal point and trailing zeros for floating-point values.
|
|
Skip
white space on input.
|
|
Left-align,
pad on right.
Right-align, pad on left. Fill between leading sign or base indicator and value. |
|
Use
scientific notation
setprecision( ) or ios::precision( ) sets number of places after the decimal point. |
manipulator
|
effect
|
---|---|
Sets
only the format flags specified by n. Setting remains in effect until the next
change, like
ios::setf( ).
|
|
Clears
only the format flags specified by n. Setting remains in effect until the next
change, like
ios::unsetf( ).
|
|
Changes
base to n, where n is 10, 8, or 16. (Anything else results in 0.) If n is zero,
output is base 10, but input uses the C conventions: 10 is 10, 010 is 8, and
0xf is 15. You might as well use
dec,
oct,
and
hex
for output.
|
|
Changes
the fill character to n, like
ios::fill( ).
|
|
Changes
the precision to n, like
ios::precision( ).
|
|
Changes
the field width to n, like
ios::width( ).
|
//: C18:Manips.cpp // FORMAT.CPP using manipulators #include <fstream> #include <iomanip> using namespace std; int main() { ofstream trc("trace.out"); int i = 47; float f = 2300114.414159; char* s = "Is there any more?"; trc << setiosflags( ios::unitbuf /*| ios::stdio */ /// ????? | ios::showbase | ios::uppercase | ios::showpos); trc << i << endl; // Default to dec trc << hex << i << endl; trc << resetiosflags(ios::uppercase) << oct << i << endl; trc.setf(ios::left, ios::adjustfield); trc << resetiosflags(ios::showbase) << dec << setfill('0'); trc << "fill char: " << trc.fill() << endl; trc << setw(10) << i << endl; trc.setf(ios::right, ios::adjustfield); trc << setw(10) << i << endl; trc.setf(ios::internal, ios::adjustfield); trc << setw(10) << i << endl; trc << i << endl; // Without setw(10) trc << resetiosflags(ios::showpos) << setiosflags(ios::showpoint) << "prec = " << trc.precision() << endl; trc.setf(ios::scientific, ios::floatfield); trc << f << endl; trc.setf(ios::fixed, ios::floatfield); trc << f << endl; trc.setf(0, ios::floatfield); // Automatic trc << f << endl; trc << setprecision(20); trc << "prec = " << trc.precision() << endl; trc << f << endl; trc.setf(ios::scientific, ios::floatfield); trc << f << endl; trc.setf(ios::fixed, ios::floatfield); trc << f << endl; trc.setf(0, ios::floatfield); // Automatic trc << f << endl; trc << setw(10) << s << endl; trc << setw(40) << s << endl; trc.setf(ios::left, ios::adjustfield); trc << setw(40) << s << endl; trc << resetiosflags( ios::showpoint | ios::unitbuf // | ios::stdio // ????????? ); } ///:~