Namespaces
Variants

std:: cout, std:: wcout

From cppreference.net
< cpp ‎ | io
Определено в заголовке <iostream>
extern std:: ostream cout ;
(1)
extern std:: wostream wcout ;
(2)

Глобальные объекты std::cout и std::wcout управляют выводом в буфер потока реализационно-определённого типа (производного от std::streambuf ), ассоциированный со стандартным потоком вывода C stdout .

Эти объекты гарантированно инициализируются во время или до первого создания объекта типа std::ios_base::Init и доступны для использования в конструкторах и деструкторах статических объектов с упорядоченной инициализацией (при условии, что <iostream> включен до определения объекта).

Если не была выполнена команда std :: ios_base :: sync_with_stdio ( false ) , безопасно обращаться к этим объектам из нескольких потоков как для форматированного, так и для неформатированного вывода.

Согласно спецификации std::cin , std:: cin . tie ( ) возвращает & std :: cout . Это означает, что любая операция ввода на std::cin выполняет std :: cout . flush ( ) (через конструктор std::basic_istream::sentry ). Аналогично, std:: wcin . tie ( ) возвращает & std :: wcout .

Согласно спецификации std::cerr , std:: cerr . tie ( ) возвращает & std :: cout . Это означает, что любая операция вывода на std::cerr выполняет std :: cout . flush ( ) (через конструктор std::basic_ostream::sentry ). Аналогично, std:: wcerr . tie ( ) возвращает & std :: wcout . (since C++11)

Примечания

Буква 'c' в названии означает "character" ( stroustrup.com FAQ ); cout означает "character output", а wcout означает "wide character output".

Поскольку динамическая инициализация шаблонных переменных неупорядочена, не гарантируется, что std::cout будет проинициализирован в рабочее состояние до начала инициализации таких переменных, если только не был создан объект типа std::ios_base::Init .

Пример

#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";
}

Вывод:

static constructor
main function
static destructor

Смотрите также

инициализирует объекты стандартных потоков
(публичный класс-член std::ios_base )
записывает в стандартный поток ошибок C stderr , небуферизованный
(глобальный объект)
записывает в стандартный поток ошибок C stderr
(глобальный объект)
выражение типа FILE * связанное с входным потоком
выражение типа FILE * связанное с выходным потоком
выражение типа FILE * связанное с потоком вывода ошибок
(макроконстанта)