# istream_iterator<T, Distance>

Category: iterators | Component type: type

### Description

An `istream_iterator` is an Input Iterator that performs formatted input of objects of type `T` from a particular `istream`. When end of stream is reached, the `istream_iterator` takes on a special end of stream value, which is a past-the-end iterator. Note that all of the restrictions of an Input Iterator must be obeyed, including the restrictions on the ordering of `operator*` and `operator++` operations.

### Example

Fill a `vector` with values read from standard input.

    vector<int> V;
    copy(istream_iterator<int>(cin), istream_iterator<int>(),
         back_inserter(V));

### Definition

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

### Template parameters

Parameter | Description | Default
--- | --- | ---
`T` | The `istream_iterator`'s value type. `Operator*` returns a `const T&`. |
`Distance` | The `istream_iterator`'s distance type. | `ptrdiff_t`

### Model of

Input Iterator

### Type requirements

The value type `T` must be a type such that `cin >> T` is a valid expression.

The value type `T` must be a model of Default Constructible.

The distance type must, as described in the Input Iterator requirements, be a signed integral type.

### Public base classes

None.

### Members

Member | Where defined | Description
--- | --- | ---
`istream_iterator()` | `istream_iterator` | See below.
`istream_iterator(istream&)` | `istream_iterator` | See below.
`istream_iterator(const istream_iterator&)` | Trivial Iterator | The copy constructor
`istream_iterator& operator=(const istream_iterator&)` | Trivial Iterator | The assignment operator
`const T& operator*() const` | Input Iterator | Returns the next object in the stream.
`istream_iterator& operator++()` | Input Iterator | Preincrement.
`istream_iterator& operator++(int)` | Input Iterator | Postincrement.
`bool operator==(const istream_iterator&, const istream_iterator&)` | Trivial iterator | The equality operator. This is a global function, not a member function.
`input_iterator_tag iterator_category(const istream_iterator&)` | iterator tags | Returns the iterator's category.
`T* value_type(const istream_iterator&)` | iterator tags | Returns the iterator's value type.
`Distance* distance_type(const istream_iterator&)` | iterator tags | Returns the iterator's distance type. <

### New members

These members are not defined in the Input Iterator requirements, but are specific to `istream_iterator`.

Function | Description
--- | ---
`istream_iterator()` | The default constructor: Constructs an end-of-stream iterator. This is a past-the-end iterator, and it is useful when constructing a "range".
`istream_iterator(istream& s)` | Creates an `istream_iterator` that reads values from the input stream `s`. When `s` reaches end of stream, this iterator will compare equal to an end-of-stream iterator created using the default constructor.

### Notes

### See also

ostream_iterator, Input Iterator, Output Iterator.

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