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_iterator
s 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++