Namespaces
Variants

std:: cout, std:: wcout

From cppreference.net
< cpp ‎ | io
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)