Standard C++ Library Reference ISO/IEC (VERSION3)

instances of fac.thousands_sep() are generated in the output field. Otherwise, separators are inserted after the
print conversion occurs.
The second virtual protected member function:
virtual iter_type do_put(iter_type next, ios_base& iosbase,
Elem fill, unsigned long val) const;
behaves the same as the first, except that it replaces a conversion specification of ld with lu.
The third virtual protected member function:
virtual iter_type do_put(iter_type next, ios_base& iosbase,
Elem fill, double val) const;
behaves the same as the first, except that it produces a floating-point output field from the value of val.
fac.decimal_point() determines the sequence that separates the integer digits from the fraction digits. The
equivalent print conversion specification is determined as follows:
If iosbase.flags() & ios_base::floatfield == ios_base::fixed, the conversion
specification is lf.
If iosbase.flags() & ios_base::floatfield == ios_base::scientific, the conversion
specification is le. If iosbase.flags() & ios_base::uppercase is nonzero, e is replaced with E.
Otherwise, the conversion specification is lg. If iosbase.flags() & ios_base::uppercase is
nonzero, g is replaced with G.
If iosbase.flags() & ios_base::fixed is nonzero, or if iosbase.precision() is greater than zero, a
precision with the value iosbase.precision() is prepended to the conversion specification. Any padding behaves
the same as for an integer output field. The padding character is fill. Finally:
If iosbase.flags() & ios_base::showpos is nonzero, the flag + is prepended to the conversion
specification.
If iosbase.flags() & ios_base::showpoint is nonzero, the flag # is prepended to the conversion
specification.
The fourth virtual protected member function:
virtual iter_type do_put(iter_type next, ios_base& iosbase,
Elem fill, long double val) const;
behaves the same the third, except that the qualifier l in the conversion specification is replaced with L.
The fifth virtual protected member function:
virtual iter_type do_put(iter_type next, ios_base& iosbase,
Elem fill, const void *val) const;
behaves the same the first, except that the conversion specification is p, plus any qualifier needed to specify padding.
The sixth virtual protected member function:
virtual iter_type do_put(iter_type next, ios_base& iosbase,
Elem fill, bool val) const;
behaves the same as the first, except that it generates a boolean output field from val.
A boolean output field takes one of two forms. If iosbase.flags() & ios_base::boolalpha is false, the
member function returns do_put(next, iosbase, fill, (long)val), which typically produces a generated
sequence of either 0 (for false) or 1 (for true). Otherwise, the generated sequence is either fac.falsename() (for
false), or fac.truename() (for true).