Espacios de nombres
Variantes
Acciones

std::cout, std::wcout

De cppreference.com
< cpp‎ | io
 
 
Biblioteca de E/S
Manipuladores de E/S
E/S estilo C
Búferes
(en desuso en C++98)
Flujos
Abstracciones
E/S de archivos
E/S de cadenas
E/S de arrays
(en desuso en C++98)
(en desuso en C++98)
(en desuso en C++98)
Salida sincronizada
Tipos
Interfaz de categoría de error
(C++11)
 
 
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) [editar]
Escribe al flujo de error estándar de C stderr, sin búfer.
(objeto global) [editar]
Escribe al flujo de error estándar de C stderr.
(objeto global) [editar]
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) [editar]