![]() |
![]() |
![]() |
istream_iterator es un iterador de entrada conectado a un flujo de entrada. Este iterador tiene un interfaz muy limitado que hace que su implementación sea muy sencilla.
template <class T, class Distance = ptrdiff_t>
class istream_iterator
{
public:
typedef input_iterator_tag iterator_category;
typedef T value_type;
typedef Distance difference_type;
typedef const T* pointer;
typedef const T& reference;
istream_iterator() : stream(&cin), end_marker(false) {}
istream_iterator(istream& s) : stream(&s) { read(); }
reference operator*() const { return value; }
pointer operator->() const { return &(operator*()); }
istream_iterator<T, Distance>& operator++() {
read();
return *this;
}
istream_iterator<T, Distance> operator++(int) {
istream_iterator<T, Distance> tmp = *this;
read();
return tmp;
}
protected:
istream* stream;
T value;
bool end_marker;
void read() {
end_marker = (*stream) ? true : false;
if (end_marker) *stream >> value;
end_marker = (*stream) ? true : false;
}
private:
friend bool operator== (const istream_iterator<T, Distance>& x,
const istream_iterator<T, Distance>& y);
};
istream_iterator para leer todas las palabras de un fichero e imprimirlo por salida estandar.istream_iterator.