istream_iterator — Klasa
Opisuje obiekt iteratora wejściowego. Wyodrębnia obiekty klasy Type
ze strumienia wejściowego, do którego uzyskuje dostęp za pośrednictwem obiektu, który przechowuje, typu pointer
do basic_istream
CharType
<, . Traits
>
Składnia
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&>;
Parametry
Type
Typ obiektu, który ma zostać wyodrębniony ze strumienia wejściowego.
Typ char
Typ reprezentujący typ znaku dla elementu istream_iterator
. Ten argument jest opcjonalny, a wartość domyślna to char
.
Cechy
Typ reprezentujący typ znaku dla elementu istream_iterator
. Ten argument jest opcjonalny, a wartość domyślna to char_traits
CharType
<>.
Odległość
Typ całkowitolicztowy ze znakiem reprezentujący typ różnicy dla elementu istream_iterator
. Ten argument jest opcjonalny, a wartość domyślna to ptrdiff_t
.
Po utworzeniu lub inkrementacji obiektu klasy istream_iterator ze wskaźnikiem przechowywanym nonnull obiekt próbuje wyodrębnić i zapisać obiekt typu Type
ze skojarzonego strumienia wejściowego. Jeśli wyodrębnienie się nie uda, obiekt skutecznie zastępuje przechowywany wskaźnik wskaźnikiem pustym, tworząc wskaźnik końca sekwencji.
Konstruktory
Konstruktor | opis |
---|---|
istream_iterator | Tworzy iterator końca strumienia jako domyślny istream_iterator lub istream_iterator zainicjowany do typu strumienia iteratora, z którego odczytuje. |
Typedefs
Nazwa typu | opis |
---|---|
char_type | Typ, który zapewnia typ znaku .istream_iterator |
istream_type | Typ, który zapewnia typ strumienia klasy istream_iterator . |
traits_type | Typ, który zapewnia typ cech znaków klasy istream_iterator . |
Operatory
Operator | opis |
---|---|
operator* | Operator dereferencing zwraca przechowywany obiekt typu Type adresowany przez istream_iterator obiekt . |
operator-> | Zwraca wartość elementu członkowskiego, jeśli istnieje. |
operator++ | Albo wyodrębnia inkrementowany obiekt ze strumienia wejściowego, albo kopiuje obiekt przed jego inkrementacją i zwraca kopię. |
Wymagania
Nagłówek:<iterator>
Przestrzeń nazw: std
istream_iterator::char_type
Typ, który zapewnia typ znaku .istream_iterator
typedef CharType char_type;
Uwagi
Typ jest synonimem parametru Chartype
szablonu .
Przykład
// 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
Tworzy iterator końca strumienia jako domyślny istream_iterator
lub istream_iterator
zainicjowany do typu strumienia iteratora, z którego odczytuje.
istream_iterator();
istream_iterator(istream_type& _Istr);
Parametry
_Istr
Strumień wejściowy do odczytu służy do inicjowania elementu istream_iterator
.
Uwagi
Pierwszy konstruktor inicjuje wskaźnik strumienia wejściowego za pomocą wskaźnika o wartości null i tworzy iterator końca strumienia. Drugi konstruktor inicjuje wskaźnik strumienia wejściowego za pomocą polecenia &_Istr, a następnie próbuje wyodrębnić i zapisać obiekt typu Type
.
Iterator końca strumienia może służyć do testowania, czy obiekt istream_iterator
osiągnął koniec strumienia.
Przykład
// 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
Typ, który zapewnia typ strumienia klasy istream_iterator
.
typedef basic_istream<CharType, Traits> istream_type;
Uwagi
Typ jest synonimem CharTypebasic_istream
<, Traits.>
Przykład
Zobacz istream_iterator , aby zapoznać się z przykładem sposobu deklarowania i używania elementu istream_type
.
istream_iterator::operator*
Operator dereferencing zwraca przechowywany obiekt typu Type
adresowany przez istream_iterator
obiekt .
const Type& operator*() const;
Wartość zwracana
Przechowywany obiekt typu Type
.
Przykład
// 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->
Zwraca wartość elementu członkowskiego, jeśli istnieje.
const Type* operator->() const;
Wartość zwracana
Wartość elementu członkowskiego, jeśli istnieje.
Uwagi
i->m
jest odpowiednikiem (*i).m
Operator zwraca wartość &*this
.
Przykład
// 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++
Albo wyodrębnia inkrementowany obiekt ze strumienia wejściowego, albo kopiuje obiekt przed jego inkrementacją i zwraca kopię.
istream_iterator<Type, CharType, Traits, Distance>& operator++();
istream_iterator<Type, CharType, Traits, Distance> operator++(int);
Wartość zwracana
Pierwszy operator elementu członkowskiego zwraca odwołanie do przyrostowego obiektu typu Type
wyodrębnionego ze strumienia wejściowego, a druga funkcja składowa zwraca kopię obiektu.
Przykład
// 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
Typ, który zapewnia typ cech znaków klasy istream_iterator
.
typedef Traits traits_type;
Uwagi
Typ jest synonimem cech parametru szablonu.
Przykład
// 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;
}
Zobacz też
input_iterator_tag, struktura
iterator, struktura
<Sterująca>
Bezpieczeństwo wątku w standardowej bibliotece C++
Dokumentacja standardowej biblioteki C++