Classe istream_iterator
Descrive un oggetto iteratore di input. Estrae oggetti della classe Type
da un flusso di input a cui accede tramite un oggetto archiviato, di tipo pointer
a basic_istream
CharType
<, . Traits
>
Sintassi
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&>;
Parametri
Type
Tipo di oggetto da estrarre dal flusso di input.
CharType
Tipo che rappresenta il tipo di carattere per istream_iterator
. Questo argomento è facoltativo e il valore predefinito è char
.
Tratti
Tipo che rappresenta il tipo di carattere per istream_iterator
. Questo argomento è facoltativo e il valore predefinito è char_traits
<CharType
>.
Distanza
Tipo integrale con segno che rappresenta il tipo di differenza per istream_iterator
. Questo argomento è facoltativo e il valore predefinito è ptrdiff_t
.
Dopo la costruzione o l'incrementazione di un oggetto della classe istream_iterator con un puntatore archiviato diverso da Null, l'oggetto tenta di estrarre e archiviare un oggetto di tipo Type
dal flusso di input associato. Se l'estrazione ha esito negativo, l'oggetto sostituisce il puntatore archiviato con un puntatore Null, creando così un indicatore di fine della sequenza.
Costruttori
Costruttore | Descrizione |
---|---|
istream_iterator | Costruisce un iteratore di fine flusso come istream_iterator predefinito o un istream_iterator inizializzato nel tipo di flusso dell'iteratore da cui legge. |
Typedef
Nome tipo | Descrizione |
---|---|
char_type | Tipo che fornisce il tipo di carattere di istream_iterator . |
istream_type | Tipo che fornisce il tipo di flusso di istream_iterator . |
traits_type | Tipo che fornisce il tipo di tratti di istream_iterator . |
Operatori
Operatore | Descrizione |
---|---|
operator* | L'operatore di dereferenziazione restituisce l'oggetto archiviato di tipo Type a cui punta istream_iterator . |
operator-> | Restituisce il valore di un numero, se presente. |
operator++ | Estrae un oggetto incrementato dal flusso di input oppure copia tale oggetto prima di incrementarlo e restituisce la copia. |
Requisiti
Header:<iterator>
Spazio dei nomi: std
istream_iterator::char_type
Tipo che fornisce il tipo di carattere di istream_iterator
.
typedef CharType char_type;
Osservazioni:
Il tipo è un sinonimo del parametro di modello Chartype
.
Esempio
// 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
Costruisce un iteratore di fine flusso come istream_iterator
predefinito o un istream_iterator
inizializzato nel tipo di flusso dell'iteratore da cui legge.
istream_iterator();
istream_iterator(istream_type& _Istr);
Parametri
_Istr
Flusso di input da leggere usato per inizializzare l'oggetto istream_iterator
.
Osservazioni:
Il primo costruttore inizializza il puntatore del flusso di input con un puntatore Null e crea un iteratore di fine flusso. Il secondo costruttore inizializza il puntatore del flusso di input con &_Istr, quindi tenta di estrarre e archiviare un oggetto di tipo Type
.
L'iteratore end-of-stream può essere usato per verificare se un oggetto istream_iterator
ha raggiunto la fine di un flusso.
Esempio
// 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 che fornisce il tipo di flusso di istream_iterator
.
typedef basic_istream<CharType, Traits> istream_type;
Osservazioni:
Il tipo è un sinonimo di basic_istream
<CharType, Traits.>
Esempio
Vedere istream_iterator per un esempio di come dichiarare e usare istream_type
.
istream_iterator::operator*
L'operatore di dereferenziazione restituisce l'oggetto archiviato di tipo Type
a cui punta istream_iterator
.
const Type& operator*() const;
Valore restituito
Oggetto archiviato di tipo Type
.
Esempio
// 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->
Restituisce il valore di un numero, se presente.
const Type* operator->() const;
Valore restituito
Valore di un membro, se presente.
Osservazioni:
i->m
equivale a (*i).m
L'operatore restituisce &*this
.
Esempio
// 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++
Estrae un oggetto incrementato dal flusso di input oppure copia tale oggetto prima di incrementarlo e restituisce la copia.
istream_iterator<Type, CharType, Traits, Distance>& operator++();
istream_iterator<Type, CharType, Traits, Distance> operator++(int);
Valore restituito
Il primo operatore membro restituisce un riferimento all'oggetto incrementato di tipo Type
estratto dal flusso di input e la seconda funzione membro restituisce una copia dell'oggetto.
Esempio
// 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 che fornisce il tipo di tratti di istream_iterator
.
typedef Traits traits_type;
Osservazioni:
Il tipo è un sinonimo del parametro di modello Traits.
Esempio
// 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;
}
Vedi anche
Struct input_iterator_tag
Struct iterator
<iterator>
Thread Safety in the C++ Standard Library (Sicurezza dei thread nella libreria standard C++)
Informazioni di riferimento per la libreria standard C++