Partager via


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_istreamCharType<, . 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++