Biblioteca de iteradores de C ++ - istreambuf_iterator
Descripción
Es un iterador de entrada especial que lee elementos sucesivos de un búfer de flujo.
Declaración
A continuación se muestra la declaración para std :: istreambuf_iterator.
C ++ 11
template <class charT, class traits = char_traits<charT> >
class istreambuf_iterator;
Parámetros
charT - Es un tipo char.
traits - Es un rasgo de carácter.
Valor devuelto
ninguna
Excepciones
Si x arroja de alguna manera al aplicar el operador unario &, esta función nunca arroja excepciones.
Complejidad del tiempo
constante para iteradores de acceso aleatorio.
Ejemplo
El siguiente ejemplo muestra el 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';
}
Compilemos y ejecutemos el programa anterior, esto producirá el siguiente 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