Biblioteca C ++ Iterator - istreambuf_iterator
Descrição
É um iterador de entrada especial que lê elementos sucessivos de um buffer de fluxo.
Declaração
A seguir está a declaração para std :: istreambuf_iterator.
C ++ 11
template <class charT, class traits = char_traits<charT> >
class istreambuf_iterator;
Parâmetros
charT - É um tipo char.
traits - É um traço de caráter.
Valor de retorno
Nenhum
Exceções
Se x de alguma forma lançar ao aplicar o operador unário & a ele, esta função nunca lançará exceções.
Complexidade de tempo
constante para iteradores de acesso aleatório.
Exemplo
O exemplo a seguir mostra o uso de 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';
}
Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -
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