Previous fileTop of DocumentContentsIndex pageNext file
Apache C++ Standard Library Reference Guide

basic_ostream

Library:  Input/output


basic_ostream basic_ios ios_base

Local Index

Members

Non-Members

Summary

Class that assists in formatting and writing output to sequences controlled by a stream buffer

Synopsis

#include <ostream> 

namespace std {
  template<class charT, class traits = char_traits<charT> >
  class basic_ostream;
}

Description

The class basic_ostream assists in formatting and writing output to sequences of characters controlled by a stream buffer. Two groups of functions share common properties, the formatted functions and the unformatted functions.

Both groups of functions insert output characters to basic_streambuf. They both begin by constructing an object of class basic_ostream::sentry and, if this object is in good state after construction, the function tries to perform the requested output. The sentry object performs exception-safe initialization, such as controlling the status of the stream or locking it in a multithread environment.

Some formatted output functions generate the requested output by converting a value from some scalar to text form and inserting the converted text in the output sequence. The conversion behavior is directly depend on the locale object being imbued in the stream.

Interface

Member Types

char_type
int_type
off_type
pos_type
traits_type

Nonmember Types

ostream
wostream

Constructor

explicit basic_ostream(basic_streambuf<charT, traits>* sb); 

Destructor

virtual ~basic_ostream();

Class sentry

Interface

Constructor

explicit sentry(basic_ostream<charT,traits>& os);

Destructor

~sentry();

Operator

operator bool();

Formatted Output Functions: Inserters

Formatted output functions start by constructing an object of class sentry. If this object returns true when converted to a value of type bool, the function attempts to produce the requested output. If the generation fails, the function calls setstate(ios::failbit), which might throw an exception. If an exception is thrown during output, ios::badbit is set in the stream object's error state without causing an ios::failure to be thrown.

If (exceptions()&badbit) != 0, the exception is rethrown. The sentry object is destroyed before the function exits. If no exception is thrown, the result of the formatted output function is *this.

basic_ostream& 
operator<<(basic_ostream& (*pf)(basic_ostream&));
basic_ostream& 
operator<<(basic_ios<char_type, traits_type>&
             (*pf)(basic_ios<char_type, traits_type>&));
basic_ostream& 
operator<<(ios_base& (*pf) (ios_base&));
basic_ostream&  
operator<<(bool n); 
basic_ostream& 
operator<<(short n); 
basic_ostream& 
operator<<(unsigned short n); 
basic_ostream& 
operator<<(int n); 
basic_ostream& 
operator<<(unsigned int n); 
basic_ostream& 
operator<<(long n); 
basic_ostream& 
operator<<(unsigned long n); 
basic_ostream& 
operator<<(float f); 
basic_ostream& 
operator<<(double f); 
basic_ostream& 
operator<<(long double f); 
basic_ostream& 
operator<<( const void *p); 
basic_ostream& 
operator<<(basic_streambuf<charT,traits> *sb); 

Unformatted Output Functions

basic_ostream& 
flush();
basic_ostream& 
put(char_type c); 
basic_ostream& 
seekp(pos_type pos); 
basic_ostream& 
seekp(off_type off, ios_base::seekdir dir);
pos_type 
tellp();
basic_ostream& 
write(const char_type* s, streamsize n); 

Nonmember Functions

template<class charT, class traits>
basic_ostream<charT, traits>&
endl(basic_ostream<charT, traits>& os); 
template<class charT, class traits>
basic_ostream<charT, traits>&
ends(basic_ostream<charT, traits>& os); 
template<class charT, class traits>
basic_ostream<charT, traits>&
flush(basic_ostream<charT, traits>& os); 
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, charT c);
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, char c);
template<class traits>
basic_ostream<char, traits>&
operator<<(basic_ostream<char, traits>& os, char c);
template<class traits>
basic_ostream<char, traits>&
operator<<(basic_ostream<char, traits>& os, signed char c);
template<class traits>
basic_ostream<char, traits>&
operator<<(basic_ostream<char, traits>& os, unsigned char c);
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const charT* s);
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const char* s); template<class traits> basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>& os, const char* s); template<class traits> basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>& os, unsigned char* s); template<class traits> basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>& os, signed char* s);

Formatting

The formatting is done through member functions or manipulators.

Table 11: Formatting manipulators and functions for basic_ostream 

Manipulators Member Functions

showpos

setf(ios_base::showpos)

noshowpos

unsetf(ios_base::showpos)

showbase

setf(ios_base::showbase)

noshowbase

unsetf(ios_base::showbase)

uppercase

setf(ios_base::uppercase)

nouppercase

unsetf(ios_base::uppercase)

showpoint

setf(ios_base::showpoint)

noshowpoint

unsetf(ios_base::showpoint)

boolalpha

setf(ios_base::boolalpha)

noboolalpha

unsetf(ios_base::boolalpha)

unitbuf

setf(ios_base::unitbuf)

nounitbuf

unsetf(ios_base::unitbuf)

internal

setf(ios_base::internal,
ios_base::adjustfield)

left

setf(ios_base::left,
ios_base::adjustfield)

right

setf(ios_base::right,
ios_base::adjustfield)

dec

setf(ios_base::dec,
ios_base::basefield)

hex

setf(ios_base::hex,
ios_base::basefield)

oct

setf(ios_base::oct,
ios_base::basefield)

fixed

setf(ios_base::fixed,
ios_base::floatfield)

scientific

setf(ios_base::scientific,
ios_base::floatfield)

resetiosflags

(ios_base::fmtflags flag)

setf(0,flag)

setiosflags

(ios_base::fmtflags flag)

setf(flag)

setbase(int base)

see above

setfill(char_type c)

fill(c)

setprecision(int n)

precision(n)

setw(int n)

width(n)

The meaning of the manipulators is as follows:

showpos

Generates a + sign in nonnegative generated numeric output

showbase

Generates a prefix indicating the numeric base of generated integer output

uppercase

Replaces certain lowercase letters with their uppercase equivalents in generated output

showpoint

Generates a decimal-point character unconditionally in generated floating-point output

boolalpha

Inserts and extracts the bool type in alphabetic format

unitbuf

Flushes output after each output operation

internal

Adds fill characters at a designated internal point in certain generated output. If no such point is designated, it's identical to right.

left

Adds fill characters on the right (final positions) of certain generated output

right

Adds fill characters on the left (initial positions) of certain generated output

dec

Converts integer input or generates integer output in decimal base

hex

Converts integer input or generates integer output in hexadecimal base

oct

Converts integer input or generates integer output in octal base

fixed

Generates floating-point output in fixed-point notation

scientific

Generates floating-point output in scientific notation

resetiosflags(ios_base::fmtflags flag)

Resets the fmtflags field flag

setiosflags(ios_base::fmtflags flag)

Sets up the flag flag.

setbase(int base)

Converts integer input or generates integer output in base base. The parameter base can be 8, 10 or 16.

setfill(char_type c)

Sets the character used to pad (fill) an output conversion to the specified field width

setprecision(int n)

Sets the precision (number of digits after the decimal point) to generate on certain output conversions

setw(int n)

Sets the field width (number of characters) to generate on certain output conversions

Example

See Also

char_traits, ios_base, basic_ios, basic_streambuf, basic_iostream

Standards Conformance

ISO/IEC 14882:1998 -- International Standard for Information Systems --Programming Language C++, Section 27.6.2.1



Previous fileTop of DocumentContentsIndex pageNext file