stlab.adobe.com Adobe Systems Incorporated

ostream_iterator

iterators.gif
type.gif
Category: iterators Component type: type

Description

An ostream_iterator is an OutputIterator that performs formatted output of objects of type T to a particular ostream. Note that all of the restrictions of an OutputIterator must be obeyed, including the restrictions on the ordering of operator* and operator++ operations.

Example

Copy the elements of a Vector to the standard output, one per line.

Vector<int> V;
// ...
copy(V.begin(), V.end(), ostream_iterator<int>(cout, "\n"));

Definition

Defined in the standard header iterator, and in the nonstandard backward-compatibility header iterator.h.

Template parameters

Parameter Description Default
T The type of object that will be written to the ostream. The set of value types of an ostream_iterator consists of a single type, T.  

Model of

OutputIterator.

Type requirements

T must be a type such that cout << T is a valid expression.

Public base classes

None.

Members

Member Where defined Description
ostream_iterator(ostream&) ostream_iterator See below.
ostream_iterator(ostream&, const char* s) ostream_iterator See below.
ostream_iterator(const ostream_iterator&) OutputIterator The copy constructor
ostream_iterator& operator=(const ostream_iterator&) OutputIterator The assignment operator
ostream_iterator& operator=(const T&) OutputIterator Used to implement the OutputIterator requirement *i = t. [1]
ostream_iterator& operator*() OutputIterator Used to implement the OutputIterator requirement *i = t. [1]
ostream_iterator& operator++() OutputIterator Preincrement
ostream_iterator& operator++(int) OutputIterator Postincrement
output_iterator_tag iterator_category(const ostream_iterator&) iterator_tags Returns the iterator's category.

New members

These members are not defined in the OutputIterator requirements, but are specific to ostream_iterator.

Function Description
ostream_iterator(ostream& s) Creates an ostream_iterator such that assignment of t through it is equivalent to s << t.
ostream_iterator(ostream& s, const char* delim) Creates an ostream_iterator such that assignment of t through it is equivalent to s << t << delim.

Notes

[1] Note how assignment through an ostream_iterator is implemented. In general, unary operator* must be defined so that it returns a proxy object, where the proxy object defines operator= to perform the output operation. In this case, for the sake of simplicity, the proxy object is the ostream_iterator itself. That is, *i simply returns i, and *i = t is equivalent to i = t. You should not, however, rely on this behavior. It is an implementation detail, and it is not guaranteed to remain the same in future versions.

See also

istream_iterator, OutputIterator, InputIterator.

Copyright © 2006-2007 Adobe Systems Incorporated.

Use of this website signifies your agreement to the Terms of Use and Online Privacy Policy.

Search powered by Google