Spec-Zone.ru › C++

std::cout, std::wcout

Определено в заголовочном файле <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. (начиная с C++11)

Примечания

Буква «c» в названии означает «character» («символ») (раздел часто задаваемых вопросов на stroustrup.com); cout означает «вывод символов», а wcout — «вывод широких символов».

Поскольку динамическая инициализация шаблонных переменных не упорядочена, не гарантируется, что 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

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/cout

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API