# ostream_iterator<T>

Category: iterators | Component type: type

### Description

An `ostream_iterator` is an Output Iterator that performs formatted output of objects of type `T` to a particular `ostream`. Note that all of the restrictions of an Output Iterator 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

Output Iterator.

### 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&)` | Output Iterator | The copy constructor
`ostream_iterator& operator=(const ostream_iterator&)` | Output Iterator | The assignment operator
`ostream_iterator& operator=(const T&)` | Output Iterator | Used to implement the Output Iterator requirement `*i = t`. [1]
`ostream_iterator& operator*()` | Output Iterator | Used to implement the Output Iterator requirement `*i = t`. [1]
`ostream_iterator& operator++()` | Output Iterator | Preincrement
`ostream_iterator& operator++(int)` | Output Iterator | 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 Output Iterator 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, Output Iterator, Input Iterator.

Copyright © 1999 Silicon Graphics, Inc. All Rights Reserved. TrademarkInformation