Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
Esta plantilla de clase describe un objeto que controla la inserción de elementos y objetos codificados en un búfer de flujo con elementos de tipo Elem, también conocidos como char_type, cuyos rasgos de caracteres están determinados por la clase Tr, también conocida como traits_type.
Sintaxis
template <class Elem, class Tr = char_traits<Elem>>
class basic_ostream : virtual public basic_ios<Elem, Tr>
Parámetros
Elem
char_type.
Tr
El carácter traits_type.
Comentarios
La mayoría de las funciones miembro que sobrecargan operador<< son funciones de salida con formato. Siguen el patrón:
iostate state = goodbit;
const sentry ok(*this);
if (ok)
{try
{<convert and insert elements
accumulate flags in state> }
catch (...)
{try
{setstate(badbit);
}
catch (...)
{}
if ((exceptions()& badbit) != 0)
throw; }}
width(0);
// Except for operator<<(Elem)
setstate(state);
return (*this);
Otras dos funciones miembro son funciones de salida sin formato. Siguen el patrón:
iostate state = goodbit;
const sentry ok(*this);
if (!ok)
state |= badbit;
else
{try
{<obtain and insert elements
accumulate flags in state> }
catch (...)
{try
{setstate(badbit);
}
catch (...)
{}
if ((exceptions()& badbit) != 0)
throw; }}
setstate(state);
return (*this);
Ambos grupos de funciones llaman a setstate(badbit) si detectan un error al insertar elementos.
Un objeto de clase basic_istream<Elem, Tr> solo almacena un objeto base público virtual de clase basic_ios<Elem, Tr>.
Ejemplo
Vea el ejemplo de basic_ofstream (Clase) para obtener más información sobre los flujos de salida.
Constructores
| Constructor | Descripción |
|---|---|
| basic_ostream | Construye un objeto basic_ostream. |
Funciones miembro
| Función de miembro | Descripción |
|---|---|
| rubor | Vacía el búfer. |
| put | Coloca un carácter en una secuencia. |
| seekp | Restablece la posición en el flujo de salida. |
| centinela | La clase anidada describe un objeto cuya declaración estructura las funciones de salida con y sin formato. |
| intercambio | Cambia los valores de este objeto basic_ostream por los del objeto basic_ostream proporcionado. |
| tellp | Notifica la posición en el flujo de salida. |
| escribir | Coloca los caracteres en una secuencia. |
Operadores
| Operador | Descripción |
|---|---|
| operador = | Asigna el valor del parámetro de objeto basic_ostream a este objeto. |
| operador<< | Escribe en la secuencia. |
Requisitos
Encabezado:<ostream>
Espacio de nombres: std
basic_ostream::basic_ostream
Construye un objeto basic_ostream.
explicit basic_ostream(
basic_streambuf<Elem, Tr>* strbuf,
bool _Isstd = false);
basic_ostream(basic_ostream&& right);
Parámetros
strbuf
Objeto de tipo basic_streambuf.
_Isstd
true si se trata de un flujo estándar; de lo contrario, false.
Derecha
Referencia a un valor R a un objeto de tipo basic_ostream.
Comentarios
El primer constructor inicializa la clase base al llamar a init(strbuf). El segundo constructor inicializa la clase base al llamar a basic_ios::move(right).
Ejemplo
Vea el ejemplo de basic_ofstream::basic_ofstream para obtener más información sobre los flujos de salida.
basic_ostream::flush
Vacía el búfer.
basic_ostream<Elem, Tr>& flush();
Valor devuelto
Referencia al objeto basic_ostream.
Comentarios
Si rdbuf no es un puntero nulo, la función llama a rdbuf>pubsync. Si eso devuelve -1, la función llama a setstate(badbit). Devuelve *this.
Ejemplo
// basic_ostream_flush.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
cout << "test";
cout.flush();
}
test
basic_ostream::operator<<
Escribe en la secuencia.
basic_ostream<Elem, Tr>& operator<<(
basic_ostream<Elem, Tr>& (* Pfn)(basic_ostream<Elem, Tr>&));
basic_ostream<Elem, Tr>& operator<<(
ios_base& (* Pfn)(ios_base&));
basic_ostream<Elem, Tr>& operator<<(
basic_ios<Elem, Tr>& (* Pfn)(basic_ios<Elem, Tr>&));
basic_ostream<Elem, Tr>& operator<<(basic_streambuf<Elem, Tr>* strbuf);
basic_ostream<Elem, Tr>& operator<<(bool val);
basic_ostream<Elem, Tr>& operator<<(short val);
basic_ostream<Elem, Tr>& operator<<(unsigned short val);
basic_ostream<Elem, Tr>& operator<<(int __w64 val);
basic_ostream<Elem, Tr>& operator<<(unsigned int __w64 val);
basic_ostream<Elem, Tr>& operator<<(long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long __w64 val);
basic_ostream<Elem, Tr>& operator<<(long long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long long val);
basic_ostream<Elem, Tr>& operator<<(float val);
basic_ostream<Elem, Tr>& operator<<(double val);
basic_ostream<Elem, Tr>& operator<<(long double val);
basic_ostream<Elem, Tr>& operator<<(const void* val);
Parámetros
Pfn
Puntero de función.
strbuf
Puntero a un objeto stream_buf .
Val
Elemento que se va a escribir en el flujo.
Valor devuelto
Referencia al objeto basic_ostream.
Comentarios
El encabezado <ostream> también define varios operadores de inserción globales. Para obtener más información, vea operator<<.
La primera función miembro garantiza que una expresión con el formato ostr << endl llame a endl(ostr) y luego devuelva *this. Las funciones segunda y tercera garantizan que los demás manipuladores, como hex, se comporten de forma similar. Las funciones restantes son todas funciones de salida con formato.
La función
basic_ostream<Elem, Tr>& operator<<(basic_streambuf<Elem, Tr>* strbuf);
extrae elementos destrbuf, si strbuf no es un puntero nulo y los inserta. La extracción se detiene al final del archivo o si una extracción inicia una excepción (que se vuelve a iniciar). También se detiene, sin extraer el elemento en cuestión, si se produce un error en una inserción. Si la función no inserta ningún elemento, o si una extracción inicia una excepción, la función llama a setstate(failbit). En cualquier caso, la función devuelve *this.
La función
basic_ostream<Elem, Tr>& operator<<(bool val);
convierte _Val en un campo booleano y lo inserta al llamar a use_facet<num_put<Elem, OutIt>(getloc).
put(OutIt(rdbuf), *this, getloc, val). Aquí, OutIt se define como ostreambuf_iterator<Elem, Tr>. La función devuelve *this.
Funciones
basic_ostream<Elem, Tr>& operator<<(short val);
basic_ostream<Elem, Tr>& operator<<(unsigned short val);
basic_ostream<Elem, Tr>& operator<<(int val);
basic_ostream<Elem, Tr>& operator<<(unsigned int __w64 val);
basic_ostream<Elem, Tr>& operator<<(long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long val);
basic_ostream<Elem, Tr>& operator<<(long long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long long val);
basic_ostream<Elem, Tr>& operator<<(const void* val);
convierten val en un campo numérico y lo insertan al llamar a use_facet<num_put<Elem, OutIt>(getloc).
put(OutIt(rdbuf), *this, getloc, val). Aquí, OutIt se define como ostreambuf_iterator<Elem, Tr>. La función devuelve *this.
Funciones
basic_ostream<Elem, Tr>& operator<<(float val);
basic_ostream<Elem, Tr>& operator<<(double val);
basic_ostream<Elem, Tr>& operator<<(long double val);
convierten val en un campo numérico y lo insertan al llamar a use_facet<num_put<Elem, OutIt>(getloc). put(OutIt(rdbuf), *this, getloc, val). Aquí, OutIt se define como ostreambuf_iterator<Elem, Tr>. La función devuelve *this.
Ejemplo
// basic_ostream_op_write.cpp
// compile with: /EHsc
#include <iostream>
#include <string.h>
using namespace std;
ios_base& hex2( ios_base& ib )
{
ib.unsetf( ios_base::dec );
ib.setf( ios_base::hex );
return ib;
}
basic_ostream<char, char_traits<char> >& somefunc(basic_ostream<char, char_traits<char> > &i)
{
if (i == cout)
{
i << "i is cout" << endl;
}
return i;
}
class CTxtStreambuf : public basic_streambuf< char, char_traits< char > >
{
public:
CTxtStreambuf(char *_pszText)
{
pszText = _pszText;
setg(pszText, pszText, pszText + strlen(pszText));
};
char *pszText;
};
int main()
{
cout << somefunc;
cout << 21 << endl;
hex2(cout);
cout << 21 << endl;
CTxtStreambuf f("text in streambuf");
cout << &f << endl;
}
basic_ostream::operator=
Asigna valores del parámetro de objeto basic_ostream proporcionado a este objeto.
basic_ostream& operator=(basic_ostream&& right);
Parámetros
Derecha
Referencia rvalue a un objeto basic_ostream.
Comentarios
El operador miembro llama a swap (right).
basic_ostream::p ut
Coloca un carácter en una secuencia.
basic_ostream<Elem, Tr>& put(char_type _Ch);
Parámetros
_Ch
Un carácter.
Valor devuelto
Referencia al objeto basic_ostream.
Comentarios
La función de salida sin formato inserta el elemento _Ch. Devuelve *this.
Ejemplo
// basic_ostream_put.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
cout.put( 'v' );
cout << endl;
wcout.put( L'l' );
}
v
l
basic_ostream::seekp
Restablece la posición en el flujo de salida.
basic_ostream<Elem, Tr>& seekp(pos_type _Pos);
basic_ostream<Elem, Tr>& seekp(off_type _Off, ios_base::seekdir _Way);
Parámetros
_Pos
Posición en el flujo.
_Apagado
Desplazamiento en relación con _Way.
_Sentido
Una de las enumeraciones ios_base::seekdir.
Valor devuelto
Referencia al objeto basic_ostream.
Comentarios
Si el error es false, la primera función miembro llama a newpos =rdbuf-> pubseekpos(_Pos), para algún pos_type objeto newpostemporal . Si fail es false, la segunda función llama a >pubseekoff(_Off, _Way). En cualquier caso, si (off_type)newpos == (off_type)(-1) (se produce un error en la operación de posicionamiento), la función llama a istr.setstate(failbit). Ambas funciones devuelven *this.
Ejemplo
// basic_ostream_seekp.cpp
// compile with: /EHsc
#include <fstream>
#include <iostream>
int main()
{
using namespace std;
ofstream x("basic_ostream_seekp.txt");
streamoff i = x.tellp();
cout << i << endl;
x << "testing";
i = x.tellp();
cout << i << endl;
x.seekp(2); // Put char in third char position in file
x << " ";
x.seekp(2, ios::end); // Put char two after end of file
x << "z";
}
0
7
basic_ostream::sentry
La clase anidada describe un objeto cuya declaración estructura las funciones de salida con y sin formato.
class sentry
{
public:
explicit sentry(basic_ostream<Elem, Tr>& _Ostr);
operator bool() const;
~sentry();
};
Comentarios
La clase anidada describe un objeto cuya declaración estructura las funciones de salida con y sin formato. Si ostr.good es true y ostr.tie no es un puntero nulo, el constructor llama a ostr.tie->flush. El constructor almacena el valor devuelto por ostr.good en status. Una llamada posterior a operator bool devuelve este valor almacenado.
Si uncaught_exception devuelve false y marcasy unitbuf es distinto de cero, el destructor llama a flush.
basic_ostream::swap
Cambia los valores de este objeto basic_ostream por los del objeto basic_ostream proporcionado.
void swap(basic_ostream& right);
Parámetros
Derecha
Referencia a un objeto basic_ostream.
Comentarios
La función miembro llama a basic_ios::swap(right) para cambiar el contenido de este objeto por el de right.
basic_ostream::tellp
Notifica la posición en el flujo de salida.
pos_type tellp();
Valor devuelto
Posición en el flujo de salida.
Comentarios
Si fail es false, la función miembro devuelve rdbuf-> pubseekoff(0, cur, in). De lo contrario, devuelve pos_type(-1).
Ejemplo
Vea seekp para obtener un ejemplo de uso de tellp.
basic_ostream::write
Coloca caracteres en un flujo.
basic_ostream<Elem, Tr>& write(const char_type* str, streamsize count);
Parámetros
contar
Recuento de caracteres que se van a colocar en el flujo.
Str
Caracteres que se van a colocar en el flujo.
Valor devuelto
Referencia al objeto basic_ostream.
Comentarios
La función de salida sin formato inserta la secuencia de elementos de conteo , que comienza en str.
Ejemplo
Vea streamsize para obtener un ejemplo de uso de write.
Consulte también
Seguridad para subprocesos en la biblioteca estándar de C++
Programación con iostream
Convenciones de iostreams