#include <ios> // see [ios.syn] #include <streambuf> // see [streambuf.syn] #include <istream> // see [istream.syn] #include <ostream> // see [ostream.syn] namespace std { extern istream cin; extern ostream cout; extern ostream cerr; extern ostream clog; extern wistream wcin; extern wostream wcout; extern wostream wcerr; extern wostream wclog; }
Заголовок <iostream> объявляет объекты, которые связывают объекты со стандартными потоками C, предусмотренными функциями, объявленными в <cstdio> ([c.files]), и включает все заголовки, необходимые для использования этих объектов.
Объекты конструируются, и ассоциации устанавливаются в некоторый момент до или во время первогоios_base::Init конструирования объекта класса , и в любом случае до начала выполнения тела main .288 Объекты не уничтожаются во время выполнения программы.289 Результаты включения <iostream> в блок трансляции должны быть такими, как если бы он был <iostream> определен как экземпляр ios_base::Init со статической продолжительностью хранения.
Операции смешивания для соответствующих потоков с широкими и узкими символами следует той же семантике, что и смешивание таких операций с FILEs, как указано в стандартной библиотеке C.
Одновременный доступ к синхронизированным ([ios.members.static]) стандартного объекта iostream отформатирован и неотформатированная input и output функции или стандартный поток С несколькими потоками , не должно приводить к data race. [ Note: Пользователи должны по-прежнему синхронизировать одновременное использование этих объектов и потоков несколькими потоками, если они хотят избежать чередования символов. ] — end note
См. Также: ISO C 7.21.2.
Если это возможно, реализациям рекомендуется инициализировать объекты раньше, чем требуется.
Конструкторы и деструкторы для статических объектов могут обращаться к этим объектам для чтения ввода stdin или записи вывода в stdout или stderr.
istream cin;
Послеcin инициализации объекта cin.tie() возвращается &cout. В остальном его состояние такое же, как требуется для basic_ios<char>::init.
ostream cout;
ostream cerr;
Послеcerr инициализации объекта cerr.flags() & unitbuf ненулевое значение и cerr.tie() возвращается &cout. В остальном его состояние такое же, как требуется для basic_ios<char>::init.
ostream clog;
wistream wcin;
Послеwcin инициализации объекта wcin.tie() возвращается &wcout. В остальном его состояние такое же, как требуется для basic_ios<wchar_t>::init.
wostream wcout;
wostream wcerr;
Послеwcerr инициализации объекта wcerr.flags() & unitbuf ненулевое значение и wcerr.tie() возвращается &wcout. В остальном его состояние такое же, как требуется для basic_ios<wchar_t>::init.
wostream wclog;