Standard C++ Library Class Reference
Description
Stream iterators provide the standard iterator interface for input and output streams.
The class istream_iterator reads elements from an input stream (using operator >>). A value of
type T is retrieved and stored when the iterator is constructed and each time operator++ is
called. The iterator will be equal to the end-of-stream iterator value if the end-of-file is reached.
Use the constructor with no arguments to create an end-of-stream iterator. The only valid use of
this iterator is to compare to other iterators when checking for end of file. Do not attempt to
dereference the end-of-stream iterator; it plays the same role as the past-the-end iterator
provided by the end() function of containers. Since an istream_iterator is an input iterator, you
cannot assign to the value returned by dereferencing the iterator. This also means that
istream_iterators can only be used for single pass algorithms.
Since a new value is read every time the operator++ is used on an istream_iterator, that
operation is not equality-preserving. This means that i == j does not mean that ++i == ++j
(although two end-of-stream iterators are always equal).
Interface
template <class T, class Distance = ptrdiff_t>
class istream_iterator : public input_iterator<T, Distance>
{
public:
istream_iterator();
istream_iterator (istream&);
istream_iterator (const istream_iterator <T, Distance>&);
~istream_itertor ();
const T& operator*() const;
const T* operator ->() const;
istream_iterator <T, Distance>& operator++();
istream_iterator <T, Distance> operator++ (int)
};
// Non-member Operators
template <class T, class Distance>
bool operator== (const istream_iterator<T, Distance>&,
const istream_iterator<T, Distance>&);
Constructors
istream_iterator ();
Construct an end-of-stream iterator. This iterator can be used to compare against an
end-of-stream condition. Use it to provide end iterators to algorithms
istream_iterator (istream& s);