Namespaces
Variants

std::ostreambuf_iterator<CharT,Traits>:: ostreambuf_iterator

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
(1)
ostreambuf_iterator ( streambuf_type * buffer ) throw ( ) ;
(hasta C++11)
ostreambuf_iterator ( streambuf_type * buffer ) noexcept ;
(desde C++11)
(2)
ostreambuf_iterator ( ostream_type & stream ) throw ( ) ;
(hasta C++11)
ostreambuf_iterator ( ostream_type & stream ) noexcept ;
(desde C++11)
1) Construye el iterador con el miembro privado streambuf_type* establecido en buffer y la bandera failed() establecida en false . El comportamiento es indefinido si buffer es un puntero nulo.
2) Igual que ostreambuf_iterator ( stream. rdbuf ( ) ) .

Parámetros

stream - el flujo de salida cuyo rdbuf() será accedido por este iterador
buffer - el búfer de flujo de salida que será accedido por este iterador

Ejemplo

#include <fstream>
#include <iostream>
#include <iterator>
int main()
{
    const char* file = "test.txt";
    {
        std::basic_filebuf<char> f;
        f.open(file, std::ios::out);
        std::ostreambuf_iterator<char> out1(&f);
        *out1 = 'a'; // escribe al archivo mediante el iterador
    }
    // leer del archivo
    char a;
    std::cout << ((std::ifstream(file) >> a), a) << std::endl;
    std::ostreambuf_iterator<wchar_t> out2{std::wcout};
    *out2 = L'b';
}

Salida:

a
b

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Se aplica a Comportamiento publicado Comportamiento correcto
LWG 112 C++98 el requisito "el argumento no puede
ser nulo" se aplicaba a la sobrecarga (2)
se aplica a la sobrecarga
(1) en su lugar
P2325R3 C++20 el constructor por defecto se proporcionaba ya que C++20
requiere que los iteradores sean default_initializable
eliminado junto con
el requisito