std::cout, std::wcout
Definido en el archivo de encabezado <iostream>
|
||
extern std::ostream cout; |
(1) | |
extern std::wostream wcout; |
(2) | |
Los objetos globales std::cout y std::wcout controlan la salida a un búfer de flujo de datos de tipo definido por la implementación (derivado de std::streambuf), asociado con el flujo de salida estándar de C: stdout.
Está garantizado que la construcción de estos objetos ocurra antes o durante el llamado al primer constructor de un objeto tipo std::ios_base::Init, y que esté disponible para su uso en los constructores y destructores de objetos estáticos con inicialización ordenada (siempre y cuando <iostream> sea incluido antes de que el objeto sea definido).
A menos que std::ios_base::sync_with_stdio(false) se haya emitido, es seguro acceder a estos objetos simultáneamente desde varios hilos, tanto para la salida con formato como para la salida sin formato.
Según la especificación de std::cin, std::cin.tie() devuelve &std::cout. Esto significa que cualquier operación de entrada en std::cin
ejecuta std::cout.flush() (a través del constructor de std::basic_istream::sentry). De manera similar, std::wcin.tie() devuelve &std::wcout.
Según la especificación de std::cerr, std::cerr.tie() devuelve &std::cout. Esto significa que cualquier operación de salida en std::cerr
ejecuta std::cout.flush() (a través del constructor de std::basic_ostream::sentry). De manera similar, std::wcerr.tie() devuelve &std::wcout. (desde C++11)
[editar] Notas
La 'c' en el nombre se refiere a "carácter" (stroustrup.com FAQ); cout
significa "salida de carácter" y wcout
significa "salida de carácter ancho".
Debido a que la inicialización dinámica de las variables plantilladas no está ordenada, no se garantiza que std::cout
se haya inicializado a un estado utilizable antes de que comience la inicialización de dichas variables, a menos que se haya construido un objeto de tipo std::ios_base::Init.
[editar] Ejemplo
#include <iostream> struct Foo { int n; Foo() { std::cout << "constructor de objeto estático\n"; } ~Foo() { std::cout << "destructor de objeto estático\n"; } }; Foo f; // objeto estático int main() { std::cout << "main\n"; }
Salida:
constructor de objeto estático main destructor de objeto estático
[editar] Véase también
Inicializa los objetos flujo estándar. (clase miembro pública de std::ios_base )
| |
Escribe al flujo de error estándar de C stderr, sin búfer. (objeto global) | |
Escribe al flujo de error estándar de C stderr. (objeto global) | |
Expresión de tipo FILE* asociada con el flujo de entrada. Expresión de tipo FILE* asociada con el flujo de salida. Expresión de tipo FILE* asociada con el flujo de error. (constante de macro) |