istream_iterator – třída
Popisuje objekt vstupního iterátoru. Extrahuje objekty třídy Type
ze vstupního datového proudu, který přistupuje prostřednictvím objektu, který ukládá, typu pointer
do basic_istream
CharType
<, . 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&>;
Parametry
Typ
Typ objektu, který má být extrahován ze vstupního datového proudu.
CharType
Typ, který představuje typ znaku istream_iterator
pro znak . Tento argument je nepovinný a výchozí hodnota je char
.
Rysy
Typ, který představuje typ znaku istream_iterator
pro znak . Tento argument je nepovinný a výchozí hodnota je char_traits
CharType
<>.
Vzdálenost
Celočíselný typ se signedm, který představuje typ rozdílu istream_iterator
pro . Tento argument je nepovinný a výchozí hodnota je ptrdiff_t
.
Po vytvoření nebo zvýšení objektu třídy istream_iterator s nenulálním uloženým ukazatelem se objekt pokusí extrahovat a uložit objekt typu Type
z přidruženého vstupního datového proudu. Pokud se extrakce nezdaří, objekt nahradí uložený ukazatel ukazatelem s hodnotou null a vytvoří tak indikátor ukončení sekvence.
Konstruktory
Konstruktor | Popis |
---|---|
istream_iterator | Vytvoří buď iterátor typu end-of-stream jako výchozí istream_iterator , nebo istream_iterator inicializovaný na typ datového proudu iterátoru, ze kterého čte. |
Typedefs
Název typu | Popis |
---|---|
char_type | Typ, který poskytuje typ znaku istream_iterator . |
istream_type | Typ, který poskytuje typ datového istream_iterator proudu . |
traits_type | Typ, který poskytuje typ znakových istream_iterator vlastností . |
Operátory
Operátor | Popis |
---|---|
operátor* | Operátor dereferencing vrátí uložený objekt typu Type adresovaný objektem istream_iterator . |
operátor-> | Vrátí hodnotu členu, pokud existuje. |
operator++ | Buď zkopíruje zvýšený objekt ze vstupního datového proudu, nebo zkopíruje objekt před jeho zvýšením a vrátí kopii. |
Požadavky
Header:<iterator>
Obor názvů: std
istream_iterator::char_type
Typ, který poskytuje typ znaku istream_iterator
.
typedef CharType char_type;
Poznámky
Typ je synonymem pro parametr Chartype
šablony .
Příklad
// 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
Vytvoří buď iterátor typu end-of-stream jako výchozí istream_iterator
, nebo istream_iterator
inicializovaný na typ datového proudu iterátoru, ze kterého čte.
istream_iterator();
istream_iterator(istream_type& _Istr);
Parametry
_Istr
Vstupní datový proud, který se má číst, slouží k inicializaci istream_iterator
.
Poznámky
První konstruktor inicializuje ukazatel vstupního datového proudu s nulovým ukazatelem a vytvoří iterátor koncového proudu. Druhý konstruktor inicializuje ukazatel vstupního datového proudu pomocí &_Istr a pak se pokusí extrahovat a uložit objekt typu Type
.
Iterátor koncového proudu lze použít k otestování, jestli istream_iterator
dosáhl konce datového proudu.
Příklad
// 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, který poskytuje typ datového istream_iterator
proudu .
typedef basic_istream<CharType, Traits> istream_type;
Poznámky
Typ je synonymem pro basic_istream
<CharType, Traits.>
Příklad
Příklad deklarace a použití istream_type
najdete v istream_iterator.
istream_iterator::operator*
Operátor dereferencing vrátí uložený objekt typu Type
adresovaný objektem istream_iterator
.
const Type& operator*() const;
Návratová hodnota
Uložený objekt typu Type
.
Příklad
// 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->
Vrátí hodnotu členu, pokud existuje.
const Type* operator->() const;
Návratová hodnota
Hodnota člena, pokud existuje.
Poznámky
i->m
je ekvivalentní (*i).m
Operátor vrátí &*this
.
Příklad
// 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++
Buď zkopíruje zvýšený objekt ze vstupního datového proudu, nebo zkopíruje objekt před jeho zvýšením a vrátí kopii.
istream_iterator<Type, CharType, Traits, Distance>& operator++();
istream_iterator<Type, CharType, Traits, Distance> operator++(int);
Návratová hodnota
První člen operátor vrátí odkaz na přírůstkový objekt typu Type
extrahovaný ze vstupního datového proudu a druhá členová funkce vrátí kopii objektu.
Příklad
// 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, který poskytuje typ znakových istream_iterator
vlastností .
typedef Traits traits_type;
Poznámky
Typ je synonymem parametru šablony Traits.
Příklad
// 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;
}
Viz také
input_iterator_tag – struktura
iterator – struktura
<iterátor>
Bezpečný přístup z více vláken ve standardní knihovně C++
Standardní knihovna C++ – referenční dokumentace