istream_iterator-Klasse

Beschreibt ein Eingabeiteratorobjekt. Es extrahiert Objekte der Klasse Type aus einem Eingabedatenstrom, auf den er über ein Objekt zugreift, auf das er speichert, vom Typ pointer bis basic_istreamCharType<, . Traits>

Syntax

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&>;

Parameter

Typ
Der Typ des Objekts, das aus dem Eingabestream extrahiert werden soll.

CharType
Der Typ, der den Zeichentyp für istream_iterator darstellt. Dieses Argument ist optional, und der Standardwert ist char.

Merkmale
Der Typ, der den Zeichentyp für istream_iterator darstellt. Dieses Argument ist optional, und der Standardwert ist char_traits<CharType>.

Entfernung
Ein ganzzahliger Typ mit Vorzeichen, der den Differenztyp für den istream_iterator darstellt. Dieses Argument ist optional, und der Standardwert ist ptrdiff_t.

Nachdem ein Objekt der Klasse istream_iterator mit einem ungleich NULL gespeicherten Zeiger erstellt oder erhöht wurde, versucht das Objekt, ein Objekt vom Typ Type aus dem zugewiesenen Eingabestream zu extrahieren und zu speichern. Wenn die Extraktion fehlschlägt, ersetzt das Objekt den gespeicherten Zeiger durch einen NULL-Zeiger und erstellt so einen Indikator für das Ende der Sequenz.

Konstruktoren

Konstruktor Beschreibung
istream_iterator Erstellt entweder einen End-of-Stream-Iterator als Standard-istream_iterator oder ein istream_iterator, der für den Streamtyp des Iterators initialisiert wird, von dem gelesen wird.

TypeDefs

Typname Beschreibung
char_type Ein Typ, der für den Zeichentyp von istream_iterator bereitgestellt wird.
istream_type Ein Typ, der für den Streamtyp von istream_iterator bereitgestellt wird.
traits_type Ein Typ, der für den Merkmaltyp von istream_iterator bereitgestellt wird.

Operatoren

Operator Beschreibung
operator* Der Dereferenzierungsoperator gibt das gespeicherte Objekt vom Typ Type zurück, das vom istream_iterator adressiert wird.
operator-> Gibt den Wert eines Members zurück, falls vorhanden.
operator++ Extrahiert entweder ein inkrementiertes Objekt im Eingabestream oder kopiert das Objekt vor dem Inkrementieren und gibt die Kopie zurück.

Anforderungen

Header:<iterator>

Namespace: std

istream_iterator::char_type

Ein Typ, der für den Zeichentyp von istream_iterator bereitgestellt wird.

typedef CharType char_type;

Hinweise

Der Type stellt ein Synonym für den Vorlagenparameter Chartypedar.

Beispiel

// 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

Erstellt entweder einen End-of-Stream-Iterator als Standard-istream_iterator oder ein istream_iterator, der für den Streamtyp des Iterators initialisiert wird, von dem gelesen wird.

istream_iterator();

istream_iterator(istream_type& _Istr);

Parameter

_Istr
Der zu lesende Eingabestream verwendet istream_iterator zum Initialisieren.

Hinweise

Der erste Konstruktor initialisiert den Eingabestreamzeiger mit einem NULL-Zeiger und erstellt einen End-of-Stream-Iterator. Der zweite Konstruktor initialisiert den Eingabedatenstromzeiger mit &_Istr und versucht dann, ein Objekt vom Typ Typezu extrahieren und zu speichern.

Der End-of-Stream-Iterator kann verwendet werden, um zu testen, ob ein istream_iterator Datenstrom das Ende eines Datenstroms erreicht hat.

Beispiel

// 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

Ein Typ, der für den Streamtyp von istream_iterator bereitgestellt wird.

typedef basic_istream<CharType, Traits> istream_type;

Hinweise

Der Typ ist ein Synonym für basic_istream<CharType, Traits>.

Beispiel

Unter istream_iterator finden Sie ein Beispiel für das Deklarieren und Verwenden eines istream_type.

istream_iterator::operator*

Der Dereferenzierungsoperator gibt das gespeicherte Objekt vom Typ Type zurück, das vom istream_iterator adressiert wird.

const Type& operator*() const;

Rückgabewert

Das gespeicherte Objekt vom Typ Type.

Beispiel

// 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->

Gibt den Wert eines Members zurück, falls vorhanden.

const Type* operator->() const;

Rückgabewert

Der Wert eines Members, falls vorhanden.

Hinweise

i->m entspricht (*i).m.

Der Operator gibt &*this zurück.

Beispiel

// 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++

Extrahiert entweder ein inkrementiertes Objekt im Eingabestream oder kopiert das Objekt vor dem Inkrementieren und gibt die Kopie zurück.

istream_iterator<Type, CharType, Traits, Distance>& operator++();

istream_iterator<Type, CharType, Traits, Distance> operator++(int);

Rückgabewert

Der erste Memberoperator gibt einen Verweis auf das inkrementierte Objekt des Typs Type zurück, das aus dem Eingabedatenstrom extrahiert wurde, und die zweite Memberfunktion gibt eine Kopie des Objekts zurück.

Beispiel

// 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

Ein Typ, der für den Merkmaltyp von istream_iterator bereitgestellt wird.

typedef Traits traits_type;

Hinweise

Der Typ stellt ein Synonym für den Vorlagenparameter Merkmale dar.

Beispiel

// 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;
}

Siehe auch

input_iterator_tag-Struktur
iterator-Struktur
<iterator>
Threadsicherheit in der C++-Standardbibliothek
C++-Standardbibliotheksreferenz