Rogue Wave banner
Previous fileTop of documentContentsIndexNext file

istream_iterator


Iterators

Summary

A stream iterator that has iterator capabilities for istreams. This iterator allows generic algorithms to be used directly on streams.

Data Type and Member Function Indexes
(exclusive of constructors and destructors)

Synopsis

#include <iterator>
template <class T, class charT, class traits = ios_traits<charT>, 
          class Distance = ptrdiff_t>
class istream_iterator : public iterator<input_iterator_tag,
                               T,Distance>;

Description

Stream iterators are 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 is equal to the end-of-stream iterator value if the end-of-file is reached. You can 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 of 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

Types

value_type; 
char_type; 
traits_type; 
istream_type; 

Constructors

istream_iterator();
istream_iterator(istream& s);
istream_iterator(const istream_iterator& x);

Destructors

~istream_iterator();

Operators

const T& 
operator*() const;
const T*
operator->() const;
istream_iterator& operator++()
istream_iterator operator++(int)

Non-member Operators

bool 
operator==(const istream_iterator<T,charT,traits,
            Distance>& x,
            const
            istream_iterator<T,charT,traits,Distance>& y)
bool 
operator!=(const istream_iterator<T,charT,traits,
            Distance>& x,
            const
            istream_iterator<T,charT,traits,Distance>& y)

Example

Warnings

If your compiler does not support default template parameters, then you always need to supply the Allocator template argument. You also have to include all parameters to the istream_iterator template. For instance, you have to write:

vector<int, allocator<int> >

instead of:

vector<int>

If your compiler does not support namespaces, then you do not need the using declaration for std.

See Also

Iterators, ostream_iterator



Previous fileTop of documentContentsIndexNext file
©Copyright 1998, Rogue Wave Software, Inc.
Send mail to report errors or comment on the documentation.
OEM Release, June 1998