std:: cout, std:: wcout
|
Definido en el 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 tipo definido por la implementación (derivado de
std::streambuf
), asociado con el flujo de salida estándar de C
stdout
.
Estos objetos están garantizados de inicializarse durante o antes de la primera vez que un objeto de tipo std::ios_base::Init es construido y están disponibles para usar en los constructores y destructores de objetos estáticos con inicialización ordenada (siempre que <iostream> sea incluido antes de que el objeto sea definido).
A menos que se haya emitido std :: ios_base :: sync_with_stdio ( false ) , es seguro acceder concurrentemente a estos objetos desde múltiples hilos tanto para salida formateada como no formateada.
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
). Similarmente,
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
). Similarmente,
std::
wcerr
.
tie
(
)
devuelve
&
std
::
wcout
.
(desde C++11)
Notas
La 'c' en el nombre se refiere a "carácter" (
stroustrup.com FAQ
);
cout
significa "salida de caracteres" y
wcout
significa "salida de caracteres anchos".
Debido a que la
inicialización dinámica
de variables
con plantillas
no está ordenada, no se garantiza que
std::cout
haya sido 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
.
Ejemplo
#include <iostream> struct Foo { int n; Foo() { std::cout << "static constructor\n"; } ~Foo() { std::cout << "static destructor\n"; } }; Foo f; // static object int main() { std::cout << "main function\n"; }
Salida:
static constructor main function static destructor
Véase también
|
inicializa objetos de 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 salida de error (constante macro) |