Libreria Iterator C ++ - istreambuf_iterator
Descrizione
È uno speciale iteratore di input che legge gli elementi successivi da un buffer di flusso.
Dichiarazione
Di seguito è riportata la dichiarazione per std :: istreambuf_iterator.
C ++ 11
template <class charT, class traits = char_traits<charT> >
class istreambuf_iterator;
Parametri
charT - È un tipo char.
traits - È un tratto caratteriale.
Valore di ritorno
nessuna
Eccezioni
Se x in qualche modo genera mentre applica l'operatore unario & ad esso, questa funzione non genera mai eccezioni.
Complessità temporale
costante per iteratori ad accesso casuale.
Esempio
L'esempio seguente mostra l'utilizzo di std :: istreambuf_iterator.
#include <vector>
#include <sstream>
#include <iostream>
#include <iterator>
int main() {
std::istringstream in("Hello, world");
std::vector<char> v( (std::istreambuf_iterator<char>(in)),
std::istreambuf_iterator<char>() );
std::cout << "v has " << v.size() << " bytes. ";
v.push_back('\0');
std::cout << "it holds \"" << &v[0] << "\"\n";
std::istringstream s("abc");
std::istreambuf_iterator<char> i1(s), i2(s);
std::cout << "i1 returns " << *i1 << '\n'
<< "i2 returns " << *i2 << '\n';
++i1;
std::cout << "after incrementing i1, but not i2\n"
<< "i1 returns " << *i1 << '\n'
<< "i2 returns " << *i2 << '\n';
++i2;
std::cout << "after incrementing i2, but not i1\n"
<< "i1 returns " << *i1 << '\n'
<< "i2 returns " << *i2 << '\n';
}
Compiliamo ed eseguiamo il programma sopra, questo produrrà il seguente risultato:
v has 12 bytes. it holds "Hello, world"
i1 returns a
i2 returns a
after incrementing i1, but not i2
i1 returns b
i2 returns a
after incrementing i2, but not i1
i1 returns b
i2 returns c