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_istream
CharType
<, . 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 Chartype
dar.
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 Type
zu 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