<iostream>

Объявляет объекты, управляющие чтением из стандартных потоков и записью в них. Это часто единственный заголовок, который требуется выполнить входные и выходные данные из программы C++.

Синтаксис

#include <iostream>

Примечание.

Библиотека <iostream> использует #include <ios>операторы , #include <streambuf>#include <istream>и #include <ostream> инструкции.

Замечания

Объекты можно разделить на две группы:

  • cin, cout, cerrи clog ориентированы на байты, выполняя обычные передачи байтов во время.

  • wcin, , wcoutwcerrи wclog широко ориентированы, переводя на широкие символы, которые программа управляет внутренне.

После выполнения определенных операций в потоке, таких как стандартные входные данные, нельзя выполнять операции другой ориентации в одном потоке. Таким образом, программа не может работать взаимозаменяемо для обоих cin и wcin, например.

Все объекты, объявленные в этом заголовке, имеют своеобразное свойство— можно предположить, что они создаются перед определением статических объектов в единице перевода, которая включает в себя <iostream>. Кроме того, можно предположить, что эти объекты не уничтожаются перед деструкторами для таких статических объектов, которые вы определяете. (Однако выходные потоки удаляются во время завершения программы.) Поэтому вы можете безопасно считывать или записывать в стандартные потоки до запуска программы и после завершения программы.

Однако эта гарантия не является универсальной. Статический конструктор может вызвать функцию в другой записи преобразования. Вызываемая функция не может предположить, что объекты, объявленные в этом заголовке, были созданы, учитывая неопределенный порядок, в котором единицы перевода участвуют в статической конструкции. Чтобы использовать эти объекты в таком контексте, необходимо сначала создать объект класса ios_base::Init.

Глобальные объекты потоков

Имя Описание
cerr Указывает глобальный поток cerr.
cin Указывает глобальный поток cin.
clog Указывает глобальный поток clog.
cout Указывает глобальный поток cout.
wcerr Указывает глобальный поток wcerr.
wcin Указывает глобальный поток wcin.
wclog Указывает глобальный поток wclog.
wcout Указывает глобальный поток wcout.

cerr

Объект cerr управляет выходными данными в буфер потока, связанный с объектом stderr, объявленным в <cstdio>.

extern ostream cerr;

Возвращаемое значение

Объект ostream.

Замечания

Этот объект управляет вставкой без буферизации в стандартный вывод ошибок в виде байтового потока. После создания объекта выражение cerr.flags & unitbuf ненулевое и cerr.tie() == &cout. Дополнительные сведения см. здесь: cerr.flags и unitbuf.

Пример

// iostream_cerr.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

using namespace std;

void TestWide( )
{
   int i = 0;
   wcout << L"Enter a number: ";
   wcin >> i;
   wcerr << L"test for wcerr" << endl;
   wclog << L"test for wclog" << endl;
}

int main( )
{
   int i = 0;
   cout << "Enter a number: ";
   cin >> i;
   cerr << "test for cerr" << endl;
   clog << "test for clog" << endl;
   TestWide( );
}

cin

Указывает глобальный поток cin.

extern istream cin;

Возвращаемое значение

Объект istream.

Замечания

Объект контролирует получение данных из стандартного ввода, как потока байтов. После создания объекта вызов cin.tie возвращается &cout.

Пример

В этом примере задает бит сбоя в потоке, cin когда он приходится на нечисловые символы. Программа очищает бит сбоя и удаляет недопустимый символ из потока, чтобы продолжить.

// iostream_cin.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

int main()
{
   int x;
   cout << "enter choice:";
   cin >> x;
   while (x < 1 || x > 4)
   {
      cout << "Invalid choice, try again:";
      cin >> x;
      // not a numeric character, probably
      // clear the failure and pull off the non-numeric character
      if (cin.fail())
      {
         cin.clear();
         char c;
         cin >> c;
      }
   }
}
2

clog

Указывает глобальный поток clog.

extern ostream clog;

Возвращаемое значение

Объект ostream.

Замечания

Этот объект управляет вставкой с буферизацей в стандартный вывод ошибок в виде байтового потока.

Пример

См. cerr с примером использования clog.

cout

Указывает глобальный поток cout.

extern ostream cout;

Возвращаемое значение

Объект ostream.

Замечания

Этот объект управляет вставкой в стандартный вывод в виде байтового потока.

Пример

См. cerr с примером использования cout.

wcerr

Указывает глобальный поток wcerr.

extern wostream wcerr;

Возвращаемое значение

Объект wostream.

Замечания

Этот объект управляет вставкой без буферизации в стандартный вывод ошибок в виде двухбайтового потока. После создания объекта выражение wcerr.flags & unitbuf ненулевое. Дополнительные сведения см. здесь: wcerr.flags и unitbuf.

Пример

См. cerr с примером использования wcerr.

wcin

Указывает глобальный поток wcin.

extern wistream wcin;

Возвращаемое значение

Объект wistream.

Замечания

Этот объект управляет извлечением из стандартного ввода в виде двухбайтового потока. После создания объекта вызов wcin.tie возвращается &wcout.

Пример

См. cerr с примером использования wcin.

wclog

Указывает глобальный поток wclog.

extern wostream wclog;

Возвращаемое значение

Объект wostream.

Замечания

Этот объект управляет вставкой с буферизацей в стандартный вывод ошибок в виде двухбайтового потока.

Пример

См. cerr с примером использования wclog.

wcout

Указывает глобальный поток wcout.

extern wostream wcout;

Возвращаемое значение

Объект wostream.

Замечания

Этот объект управляет вставкой в стандартный вывод в качестве широкого потока.

Пример

См. cerr с примером использования wcout.

Экземпляры CStringв операторе wcout необходимо привести к const wchar_t*, как показано в следующем примере.

CString cs("meow");

wcout <<(const wchar_t*) cs <<endl;

Дополнительные сведения см. в разделе Базовые операции CString.

См. также

Справочник по файлам заголовков
Потокобезопасность в стандартной библиотеке C++
Программирование iostream
Соглашения iostreams