Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This template class describes an object that controls insertion of elements and encoded objects into a stream buffer with elements of type Elem, also known as char_type, whose character traits are determined by the class Tr, also known as traits_type.
For a list of all members of this type, see basic_ostream Members.
template <class _Elem, class _Tr = char_traits<Elem> >
class basic_ostream
: virtual public basic_ios<_Elem, _Tr>
Parameters
_Elem
A char_type._Tr
The character traits_type.
Remarks
Most of the member functions that overload operator<< are formatted output functions. They follow the pattern:
iostate state = goodbit;
const sentry ok( *this );
if ( ok )
{try
{<convert and insert elements
accumulate flags in state> }
catch ( ... )
{try
{setstate( badbit ); }
catch ( ... )
{}
if ( ( exceptions( ) & badbit ) != 0 )
throw; }}
width( 0 ); // Except for operator<<(Elem)
setstate( state );
return ( *this );
Two other member functions are unformatted output functions. They follow the pattern:
iostate state = goodbit;
const sentry ok( *this );
if ( !ok )
state |= badbit;
else
{try
{<obtain and insert elements
accumulate flags in state> }
catch ( ... )
{try
{setstate( badbit ); }
catch ( ... )
{}
if ( ( exceptions( ) & badbit ) != 0 )
throw; }}
setstate( state );
return ( *this );
Both groups of functions call setstate(badbit) if they encounter a failure while inserting elements.
An object of class basic_istream<Elem, Tr> stores only a virtual public base object of class basic_ios<Elem, Tr>.
Example
See the example for basic_ofstream Class to learn more about output streams.
Requirements
Header: <ostream>
Namespace: std
See Also
Reference
Thread Safety in the Standard C++ Library