istream_iterator (Clase)
Describe un objeto iterador de entrada. Extrae objetos de clase Type
de un flujo de entrada al que tiene acceso a través de un objeto que almacena, de tipo pointer
en basic_istream
<CharType
, Traits
>.
Sintaxis
template <class Type, class CharType = char, class Traits = char_traits<CharType>, class Distance = ptrdiff_t>
class istream_iterator
: public iterator<
input_iterator_tag, Type, Distance,
const Type *,
const Type&>;
Parámetros
Tipo
Tipo de objeto que se extraerá del flujo de entrada.
CharType
Tipo que representa el tipo de caracteres para istream_iterator
. Este argumento es opcional y el valor predeterminado es char
.
Rasgos
Tipo que representa el tipo de caracteres para istream_iterator
. Este argumento es opcional y el valor predeterminado es char_traits
<CharType
>.
Distancia
Tipo entero con signo que representa el tipo de diferencia para istream_iterator
. Este argumento es opcional y el valor predeterminado es ptrdiff_t
.
Después de crear o incrementar un objeto de clase istream_iterator con un puntero almacenado no null, el objeto intenta extraer y almacenar un objeto de tipo Type
del flujo de entrada asociado. Si se produce un error en la extracción, el objeto reemplaza el puntero almacenado con un puntero NULL, creando de esta forma un indicador de fin de secuencia.
Constructores
Constructor | Descripción |
---|---|
istream_iterator | Construye un iterador de fin de secuencia como istream_iterator predeterminado, o bien un istream_iterator inicializado en el tipo de flujo del iterador del que lee. |
Typedefs
Nombre de tipo | Descripción |
---|---|
char_type | Tipo que proporciona el tipo de los caracteres de istream_iterator . |
istream_type | Tipo que proporciona el tipo de flujo de istream_iterator . |
traits_type | Tipo que proporciona el tipo de rasgos de los caracteres de istream_iterator . |
Operadores
Operador | Descripción |
---|---|
operator* | El operador de desreferencia devuelve el objeto almacenado de tipo Type señalado por istream_iterator . |
operator-> | Devuelve el valor de un miembro, si existe. |
operator++ | Extrae un objeto incrementado del flujo de entrada o copia el objeto antes de aumentarlo y devuelve la copia. |
Requisitos
Encabezado:<iterator>
Espacio de nombres: std
istream_iterator::char_type
Tipo que proporciona el tipo de los caracteres de istream_iterator
.
typedef CharType char_type;
Comentarios
El tipo es un sinónimo del parámetro de plantilla Chartype
.
Ejemplo
// istream_iterator_char_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
typedef istream_iterator<int>::char_type CHT1;
typedef istream_iterator<int>::traits_type CHTR1;
// Standard iterator interface for reading
// elements from the input stream:
cout << "Enter integers separated by spaces & then\n"
<< " any character ( try example: '2 4 f' ): ";
// istream_iterator for reading int stream
istream_iterator<int, CHT1, CHTR1> intRead ( cin );
// End-of-stream iterator
istream_iterator<int, CHT1, CHTR1> EOFintRead;
while ( intRead != EOFintRead )
{
cout << "Reading: " << *intRead << endl;
++intRead;
}
cout << endl;
}
istream_iterator::istream_iterator
Construye un iterador de fin de secuencia como istream_iterator
predeterminado, o bien un istream_iterator
inicializado en el tipo de flujo del iterador del que lee.
istream_iterator();
istream_iterator(istream_type& _Istr);
Parámetros
_Istr
Flujo de entrada que se va a leer usado para inicializar istream_iterator
.
Comentarios
El primer constructor inicializa el puntero del flujo de entrada con un puntero null y crea un iterador de fin de flujo. El segundo constructor inicializa el puntero de flujo de entrada con &_Istr y, a continuación, intenta extraer y almacenar un objeto de tipo Type
.
El iterador de fin de flujo se puede usar para probar si istream_iterator
ha llegado al final de un flujo.
Ejemplo
// istream_iterator_istream_iterator.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <algorithm>
#include <iostream>
int main( )
{
using namespace std;
// Used in conjunction with copy algorithm
// to put elements into a vector read from cin
vector<int> vec ( 4 );
vector <int>::iterator Iter;
cout << "Enter 4 integers separated by spaces & then\n"
<< " a character ( try example: '2 4 6 8 a' ): ";
istream_iterator<int> intvecRead ( cin );
// Default constructor will test equal to end of stream
// for delimiting source range of vecor
copy ( intvecRead , istream_iterator<int>( ) , vec.begin ( ) );
cin.clear ( );
cout << "vec = ";
for ( Iter = vec.begin( ) ; Iter != vec.end( ) ; Iter++ )
cout << *Iter << " "; cout << endl;
}
istream_iterator::istream_type
Tipo que proporciona el tipo de flujo de istream_iterator
.
typedef basic_istream<CharType, Traits> istream_type;
Comentarios
El tipo es sinónimo de basic_istream
<CharType, Traits>.
Ejemplo
Vea istream_iterator para obtener un ejemplo de cómo declarar y usar istream_type
.
istream_iterator::operator*
El operador de desreferencia devuelve el objeto almacenado de tipo Type
señalado por istream_iterator
.
const Type& operator*() const;
Valor devuelto
Objeto almacenado de tipo Type
.
Ejemplo
// istream_iterator_operator.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <algorithm>
#include <iostream>
int main( )
{
using namespace std;
cout << "Enter integers separated by spaces & then\n"
<< " a character ( try example: '2 4 6 8 a' ): ";
// istream_iterator from stream cin
istream_iterator<int> intRead ( cin );
// End-of-stream iterator
istream_iterator<int> EOFintRead;
while ( intRead != EOFintRead )
{
cout << "Reading: " << *intRead << endl;
++intRead;
}
cout << endl;
}
istream_iterator::operator->
Devuelve el valor de un miembro, si existe.
const Type* operator->() const;
Valor devuelto
Valor de un miembro, si existe.
Comentarios
i->m
equivale a (*i).m
.
El operador devuelve &*this
.
Ejemplo
// istream_iterator_operator_vm.cpp
// compile with: /EHsc
#include <iterator>
#include <iostream>
#include <complex>
using namespace std;
int main( )
{
cout << "Enter complex numbers separated by spaces & then\n"
<< " a character pair ( try example: '(1,2) (3,4) (a,b)' ): ";
// istream_iterator from stream cin
istream_iterator< complex<double> > intRead ( cin );
// End-of-stream iterator
istream_iterator<complex<double> > EOFintRead;
while ( intRead != EOFintRead )
{
cout << "Reading the real part: " << intRead ->real( ) << endl;
cout << "Reading the imaginary part: " << intRead ->imag( ) << endl;
++intRead;
}
cout << endl;
}
istream_iterator::operator++
Extrae un objeto incrementado del flujo de entrada o copia el objeto antes de aumentarlo y devuelve la copia.
istream_iterator<Type, CharType, Traits, Distance>& operator++();
istream_iterator<Type, CharType, Traits, Distance> operator++(int);
Valor devuelto
El primer operador miembro devuelve una referencia al objeto incrementado de tipo Type
extraído del flujo de entrada y la segunda función miembro devuelve una copia del objeto.
Ejemplo
// istream_iterator_operator_incr.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <algorithm>
#include <iostream>
int main( )
{
using namespace std;
cout << "Enter integers separated by spaces & then\n"
<< " a character ( try example: '2 4 6 8 a' ): ";
// istream_iterator from stream cin
istream_iterator<int> intRead ( cin );
// End-of-stream iterator
istream_iterator<int> EOFintRead;
while ( intRead != EOFintRead )
{
cout << "Reading: " << *intRead << endl;
++intRead;
}
cout << endl;
}
istream_iterator::traits_type
Tipo que proporciona el tipo de rasgos de los caracteres de istream_iterator
.
typedef Traits traits_type;
Comentarios
El tipo es un sinónimo del parámetro de plantilla Traits.
Ejemplo
// istream_iterator_traits_type.cpp
// compile with: /EHsc
#include <iterator>
#include <iostream>
int main( )
{
using namespace std;
typedef istream_iterator<int>::char_type CHT1;
typedef istream_iterator<int>::traits_type CHTR1;
// Standard iterator interface for reading
// elements from the input stream:
cout << "Enter integers separated by spaces & then\n"
<< " any character ( try example: '10 20 a' ): ";
// istream_iterator for reading int stream
istream_iterator<int, CHT1, CHTR1> intRead ( cin );
// End-of-stream iterator
istream_iterator<int, CHT1, CHTR1> EOFintRead;
while ( intRead != EOFintRead )
{
cout << "Reading: " << *intRead << endl;
++intRead;
}
cout << endl;
}
Vea también
input_iterator_tag (Struct)
iterator (Struct)
<iterator>
Seguridad para subprocesos en la biblioteca estándar de C++
Referencia de biblioteca estándar de C++