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
.
(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 * связанное с потоком вывода ошибок (макроконстанта) |