Compartir a través de


ostreambuf_iterator

La plantilla de clase ostreambuf_iterator describe un objeto iterador de salida que escribe elementos de caracteres sucesivos en el flujo de salida con la extracción operator>>. Los objetos ostreambuf_iterators se diferencian de los de la clase ostream_iterator en que tienen caracteres en lugar de un tipo genérico en el tipo de objeto que se inserta en el flujo de salida.

Sintaxis

template <class CharType = char class Traits = char_traits <CharType>>

Parámetros

CharType
Tipo que representa el tipo de caracteres para ostreambuf_iterator. Este argumento es opcional y el valor predeterminado es char.

Rasgos
Tipo que representa el tipo de caracteres para ostreambuf_iterator. Este argumento es opcional y el valor predeterminado es char_traits<CharType>.

Comentarios

La clase ostreambuf_iterator debe satisfacer los requisitos de un iterador de salida. Los algoritmos se pueden escribir directamente en el flujo de salida mediante ostreambuf_iterator. La clase proporciona un iterador de flujo de bajo nivel que permite acceso al flujo raw (sin formato) de E/S en forma de caracteres y la capacidad de omitir las traslaciones de caracteres y el almacenamiento en búfer asociados a los iteradores de flujo de alto nivel.

Constructores

Constructor Descripción
ostreambuf_iterator Construye un objeto ostreambuf_iterator que se inicializa para escribir caracteres en el flujo de salida.

Typedefs

Nombre de tipo Descripción
char_type Tipo que proporciona el tipo de los caracteres de ostreambuf_iterator.
ostream_type Tipo que proporciona el tipo de flujo de ostream_iterator.
streambuf_type Tipo que proporciona el tipo de flujo de ostreambuf_iterator.
traits_type Tipo que proporciona el tipo de rasgos de los caracteres de ostream_iterator.

Funciones miembro

Función de miembro Descripción
failed Comprueba si hay errores en una inserción en el búfer del flujo de salida.

Operadores

Operador Descripción
operator* Desreferencia el operador usado para implementar la expresión de iterador de salida * i = x.
operator++ Operador de incremento no funcional que devuelve un objeto ostreambuf_iterator al mismo objeto que señalaba antes de que se llamara a la operación.
operator= El operador inserta un carácter en el búfer del flujo asociado.

Requisitos

Encabezado:<iterator>

Espacio de nombres: std

ostreambuf_iterator::char_type

Tipo que proporciona el tipo de los caracteres de ostreambuf_iterator.

typedef CharType char_type;

Comentarios

El tipo es un sinónimo del parámetro de plantilla CharType.

Ejemplo

// ostreambuf_iterator_char_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   typedef ostreambuf_iterator<char>::char_type CHT1;
   typedef ostreambuf_iterator<char>::traits_type CHTR1;

   // ostreambuf_iterator for stream cout
   // with new line delimiter:
    ostreambuf_iterator< CHT1, CHTR1> charOutBuf ( cout );

   // Standard iterator interface for writing
   // elements to the output streambuf:
   cout << "The characters written to the output stream\n"
        << " by charOutBuf are: ";
*charOutBuf = 'O';
   charOutBuf++;
*charOutBuf = 'U';
   charOutBuf++;
*charOutBuf = 'T';
   charOutBuf++;
   cout << "." << endl;
}
/* Output:
The characters written to the output stream
by charOutBuf are: OUT.
*/

ostreambuf_iterator::failed

Comprueba si hay errores en una inserción en el búfer del flujo de salida.

bool failed() const throw();

Valor devuelto

true si no se han producido errores anteriormente en ninguna inserción del búfer del flujo de salida; de otro modo, false.

Comentarios

La función miembro devuelve true si, en algún uso anterior del miembro operator=, la llamada a subf_->sputc ha devuelto eof.

Ejemplo

// ostreambuf_iterator_failed.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostreambuf_iterator for stream cout
   ostreambuf_iterator<char> charOut ( cout );

*charOut = 'a';
   charOut ++;
*charOut  = 'b';
   charOut ++;
*charOut = 'c';
   cout << " are characters output individually." << endl;

   bool b1 = charOut.failed ( );
   if (b1)
       cout << "At least one insertion failed." << endl;
   else
       cout << "No insertions failed." << endl;
}
/* Output:
abc are characters output individually.
No insertions failed.
*/

ostreambuf_iterator::operator*

Un operador de desreferencia no funcional usado para implementar la expresión de iterador de salida * i = x.

ostreambuf_iterator<CharType, Traits>& operator*();

Valor devuelto

El objeto de iterador ostreambuf.

Comentarios

Este operador solo funciona en la expresión de iterador de salida * i = x para caracteres de salida del búfer de secuencia. Aplicado en un iterador ostreambuf, devuelve el iterador; *iter devuelve iter,

Ejemplo

// ostreambuf_iterator_op_deref.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostreambuf_iterator for stream cout
   // with new line delimiter
   ostreambuf_iterator<char> charOutBuf ( cout );

   // Standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*charOutBuf = 'O';
   charOutBuf++;   // no effect on iterator position
*charOutBuf = 'U';
*charOutBuf = 'T';
}
/* Output:
Elements written to output stream:
OUT
*/

ostreambuf_iterator::operator++

Un operador de incremento no funcional que devuelve un iterador ostream al mismo carácter que señalaba antes de que se llamara a la operación.

ostreambuf_iterator<CharType, Traits>& operator++();
ostreambuf_iterator<CharType, Traits>& operator++(int);

Valor devuelto

Una referencia al carácter que se ha direccionado originalmente o a un objeto definido por una implementación que puede convertirse en ostreambuf_iterator<CharType, Traits>.

Comentarios

El operador se usa para implementar la expresión de iterador de salida * i = x.

Ejemplo

// ostreambuf_iterator_op_incr.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostreambuf_iterator for stream cout
   // with new line delimiter
   ostreambuf_iterator<char> charOutBuf ( cout );

   // Standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*charOutBuf = 'O';
   charOutBuf++;      // No effect on iterator position
*charOutBuf = 'U';
*charOutBuf = 'T';
}
/* Output:
Elements written to output stream:
OUT
*/

ostreambuf_iterator::operator=

El operador inserta un carácter en el búfer del flujo asociado.

ostreambuf_iterator<CharType, Traits>& operator=(CharType _Char);

Parámetros

_Char
El carácter que se va a insertar en el búfer de secuencia.

Valor devuelto

Una referencia al carácter insertado en el búfer de secuencia.

Comentarios

Operador de asignación que se usa para implementar la expresión de iterador de salida * i = x para escribir en un flujo de salida.

Ejemplo

// ostreambuf_iterator_op_assign.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostreambuf_iterator for stream cout
   // with new line delimiter
   ostreambuf_iterator<char> charOutBuf ( cout );

   // Standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*charOutBuf = 'O';
   charOutBuf++;      // No effect on iterator position
*charOutBuf = 'U';
*charOutBuf = 'T';
}
/* Output:
Elements written to output stream:
OUT
*/

ostreambuf_iterator::ostreambuf_iterator

Construye un objeto ostreambuf_iterator que se inicializa para escribir caracteres en el flujo de salida.

ostreambuf_iterator(streambuf_type* strbuf) throw();
ostreambuf_iterator(ostream_type& Ostr) throw();

Parámetros

strbuf
El objeto streambuf de salida que se ha usado para inicializar el puntero de búfer de flujo de salida.

Ostr
El objeto de flujo de salida que se ha usado para inicializar el puntero de búfer de flujo de salida.

Comentarios

El primer constructor inicializa el puntero de búfer de flujo de salida con strbuf.

El segundo constructor inicializa el puntero de búfer de flujo de salida con Ostr. rdbuf. El puntero almacenado no debe ser un puntero nulo.

Ejemplo

// ostreambuf_iteratorOstreambuf_iterator.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostreambuf_iterator for stream cout
   ostreambuf_iterator<char> charOut ( cout );

*charOut = 'O';
   charOut ++;
*charOut  = 'U';
   charOut ++;
*charOut = 'T';
   cout << " are characters output individually." << endl;

   ostreambuf_iterator<char> strOut ( cout );
   string str = "These characters are being written to the output stream.\n ";
   copy ( str.begin ( ), str. end ( ), strOut );
}
/* Output:
OUT are characters output individually.
These characters are being written to the output stream.
*/

ostreambuf_iterator::ostream_type

Tipo que proporciona el tipo de flujo de ostream_iterator.

typedef basicOstream<CharType, Traits> ostream_type;

Comentarios

El tipo es un sinónimo para basicOstream<CharType, Traits>

Ejemplo

Vea ostreambuf_iterator para obtener un ejemplo de cómo declarar y usar ostream_type.

ostreambuf_iterator::streambuf_type

Tipo que proporciona el tipo de flujo de ostreambuf_iterator.

typedef basic_streambuf<CharType, Traits> streambuf_type;

Comentarios

El tipo es un sinónimo de basic_streambuf<CharType, Traits>, una clase de secuencia para búferes de E/S que se convierte en streambuf cuando se especializa en el tipo de carácter char.

Ejemplo

Vea ostreambuf_iterator para obtener un ejemplo de cómo declarar y usar streambuf_type.

ostreambuf_iterator::traits_type

Tipo que proporciona el tipo de rasgos de los caracteres de ostream_iterator.

typedef Traits traits_type;

Comentarios

El tipo es un sinónimo del parámetro de plantilla Traits.

Ejemplo

// ostreambuf_iterator_traits_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   typedef ostreambuf_iterator<char>::char_type CHT1;
   typedef ostreambuf_iterator<char>::traits_type CHTR1;

   // ostreambuf_iterator for stream cout
   // with new line delimiter:
    ostreambuf_iterator< CHT1, CHTR1> charOutBuf ( cout );

   // Standard iterator interface for writing
   // elements to the output streambuf:
   cout << "The characters written to the output stream\n"
        << " by charOutBuf are: ";
*charOutBuf = 'O';
   charOutBuf++;
*charOutBuf = 'U';
   charOutBuf++;
*charOutBuf = 'T';
   charOutBuf++;
   cout << "." << endl;
}
/* Output:
The characters written to the output stream
by charOutBuf are: OUT.
*/

Vea también

<iterator>
Seguridad para subprocesos en la biblioteca estándar de C++
Referencia de biblioteca estándar de C++