| 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 // ?????????
);