Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 vector
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++