Files
cppdraft_translate/cppdraft/ostream/inserters/arithmetic.md
2025-10-25 03:02:53 +03:00

5.6 KiB

[ostream.inserters.arithmetic]

31 Input/output library [input.output]

31.7 Formatting and manipulators [iostream.format]

31.7.6 Output streams [output.streams]

31.7.6.3 Formatted output functions [ostream.formatted]

31.7.6.3.2 Arithmetic inserters [ostream.inserters.arithmetic]

🔗

basic_ostream& operator<<(bool val); basic_ostream& operator<<(short val); basic_ostream& operator<<(unsigned short val); basic_ostream& operator<<(int val); basic_ostream& operator<<(unsigned int val); basic_ostream& operator<<(long val); basic_ostream& operator<<(unsigned long val); basic_ostream& operator<<(long long val); basic_ostream& operator<<(unsigned long long val); basic_ostream& operator<<(float val); basic_ostream& operator<<(double val); basic_ostream& operator<<(long double val); basic_ostream& operator<<(const void* val);

1

#

Effects: The classesnum_get<> andnum_put<> handle locale-dependent numeric formatting and parsing.

These inserter functions use the imbuedlocale value to perform numeric formatting.

When val is of typebool,long,unsigned long,long long, unsigned long long,double,long double, orconst void*, the formatting conversion occurs as if it performed the following code fragment:bool failed = use_facet<num_put<charT, ostreambuf_iterator<charT, traits>>>( getloc()).put(*this, *this, fill(), val).failed();

When val is of typeshort the formatting conversion occurs as if it performed the following code fragment:ios_base::fmtflags baseflags = ios_base::flags() & ios_base::basefield;bool failed = use_facet<num_put<charT, ostreambuf_iterator<charT, traits>>>( getloc()).put(*this, *this, fill(), baseflags == ios_base::oct || baseflags == ios_base::hex ? static_cast(static_cast(val)): static_cast(val)).failed();

When val is of typeint the formatting conversion occurs as if it performed the following code fragment:ios_base::fmtflags baseflags = ios_base::flags() & ios_base::basefield;bool failed = use_facet<num_put<charT, ostreambuf_iterator<charT, traits>>>( getloc()).put(*this, *this, fill(), baseflags == ios_base::oct || baseflags == ios_base::hex ? static_cast(static_cast(val)): static_cast(val)).failed();

When val is of typeunsigned short orunsigned int the formatting conversion occurs as if it performed the following code fragment:bool failed = use_facet<num_put<charT, ostreambuf_iterator<charT, traits>>>( getloc()).put(*this, *this, fill(), static_cast(val)).failed();

When val is of typefloat the formatting conversion occurs as if it performed the following code fragment:bool failed = use_facet<num_put<charT, ostreambuf_iterator<charT, traits>>>( getloc()).put(*this, *this, fill(), static_cast(val)).failed();

2

#

The first argument provides an object of theostreambuf_iterator<> class which is an iterator for class basic_ostream<>.

It bypassesostreams and usesstreambufs directly.

Classlocale relies on these types as its interface to iostreams, since for flexibility it has been abstracted away from direct dependence onostream.

The second parameter is a reference to the base class subobject of typeios_base.

It provides formatting specifications such as field width, and a locale from which to obtain other facets.

Iffailed istrue then doessetstate(badbit), which may throw an exception, and returns.

3

#

Returns: *this.

🔗

basic_ostream& operator<<(const volatile void* p);

4

#

Effects: Equivalent to: return operator<<(const_cast<const void*>(p));

🔗

basic_ostream& operator<<(extended-floating-point-type val);

5

#

Effects: If the floating-point conversion rank of extended-floating-point-type is less than or equal to that of double, the formatting conversion occurs as if it performed the following code fragment:bool failed = use_facet<num_put<charT, ostreambuf_iterator<charT, traits>>>( getloc()).put(*this, *this, fill(), static_cast(val)).failed();

Otherwise, if the floating-point conversion rank of extended-floating-point-type is less than or equal to that of long double, the formatting conversion occurs as if it performed the following code fragment:bool failed = use_facet<num_put<charT, ostreambuf_iterator<charT, traits>>>( getloc()).put(*this, *this, fill(), static_cast(val)).failed();

Otherwise, an invocation of the operator function is conditionally supported with implementation-defined semantics.

If failed is true then does setstate(badbit), which may throw an exception, and returns.

6

#

Returns: *this.