istream_iterator, classe
Décrit un objet itérateur d'entrée. Il extrait des objets de classe Type
à partir d’un flux d’entrée, auquel il accède par le biais d’un objet qu’il stocke, de type pointer
à basic_istream
CharType
<, . Traits
>
Syntaxe
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&>;
Paramètres
Type
Type de l'objet à extraire du flux d'entrée.
CharType
Type qui représente le type de caractère de istream_iterator
. Cet argument est facultatif et sa valeur par défaut est char
.
Caractéristiques
Type qui représente le type de caractère de istream_iterator
. Cet argument est facultatif et sa valeur par défaut est char_traits
<CharType
>.
Distance
Type intégral signé qui représente le type de différence de istream_iterator
. Cet argument est facultatif et sa valeur par défaut est ptrdiff_t
.
Après avoir construit ou incrémenté un objet de classe istream_iterator avec un pointeur non null stocké, l'objet tente d'extraire et de stocker un objet de type Type
à partir du flux d'entrée associé. Si l'extraction échoue, l'objet remplace le pointeur stocké par un pointeur null, créant ainsi un indicateur de fin de séquence.
Constructeurs
Constructeur | Description |
---|---|
istream_iterator | Construit un itérateur de fin de flux comme istream_iterator par défaut ou un istream_iterator initialisé sur le type de flux de l'itérateur à partir duquel il lit. |
Typedefs
Nom de type | Description |
---|---|
char_type | Type qui fournit le type de caractère de istream_iterator . |
istream_type | Type qui fournit le type de flux de istream_iterator . |
traits_type | Type qui fournit le type de caractéristique de istream_iterator . |
Opérateurs
Opérateur | Description |
---|---|
operator* | L'opérateur de déréférencement retourne l'objet stocké de type Type auquel se rapporte l'objet istream_iterator . |
operator-> | Retourne la valeur d'un membre, le cas échéant. |
operator++ | Extrait un objet incrémenté du flux d'entrée ou copie l'objet avant de l'incrémenter et retourne la copie. |
Spécifications
Header :<iterator>
Espace de noms : std
istream_iterator ::char_type
Type qui fournit le type de caractère de istream_iterator
.
typedef CharType char_type;
Notes
Le type est un synonyme du paramètre de modèle Chartype
.
Exemple
// 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
Construit un itérateur de fin de flux comme istream_iterator
par défaut ou un istream_iterator
initialisé sur le type de flux de l'itérateur à partir duquel il lit.
istream_iterator();
istream_iterator(istream_type& _Istr);
Paramètres
_Istr
Flux d’entrée à lire pour initialiser le istream_iterator
.
Notes
Le premier constructeur initialise le pointeur de flux d’entrée avec un pointeur Null et crée un itérateur de fin de flux. Le deuxième constructeur initialise le pointeur de flux d’entrée avec &_Istr, puis tente d’extraire et de stocker un objet de type Type
.
L’itérateur de fin de flux peut être utilisé pour tester si un istream_iterator
itérateur a atteint la fin d’un flux.
Exemple
// 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
Type qui fournit le type de flux de istream_iterator
.
typedef basic_istream<CharType, Traits> istream_type;
Notes
Le type est un synonyme de basic_istream
<CharType, Traits>.
Exemple
Pour découvrir comment déclarer et utiliser istream_type
, consultez l’exemple relatif à istream_iterator.
istream_iterator ::operator*
L'opérateur de déréférencement retourne l'objet stocké de type Type
auquel se rapporte l'objet istream_iterator
.
const Type& operator*() const;
Valeur de retour
Objet stocké de type Type
.
Exemple
// 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->
Retourne la valeur d'un membre, le cas échéant.
const Type* operator->() const;
Valeur de retour
Valeur d’un membre, le cas échéant.
Notes
i->m
équivaut à (*i).m
L'opérateur retourne &*this
.
Exemple
// 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++
Extrait un objet incrémenté du flux d'entrée ou copie l'objet avant de l'incrémenter et retourne la copie.
istream_iterator<Type, CharType, Traits, Distance>& operator++();
istream_iterator<Type, CharType, Traits, Distance> operator++(int);
Valeur de retour
Le premier opérateur membre retourne une référence à l’objet incrémenté de type Type
extrait du flux d’entrée et la deuxième fonction membre retourne une copie de l’objet.
Exemple
// 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
Type qui fournit le type de caractéristique de istream_iterator
.
typedef Traits traits_type;
Notes
Le type est un synonyme du paramètre de modèle Traits.
Exemple
// 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;
}
Voir aussi
input_iterator_tag, struct
iterator, struct
<iterator>
Sécurité des threads dans la bibliothèque C++ Standard
Informations de référence sur la bibliothèque standard C++