<iostream>
Объявляет объекты, управляющие чтением из стандартных потоков и записью в них. Это часто единственный заголовок, который требуется выполнить входные и выходные данные из программы C++.
Синтаксис
#include <iostream>
Примечание.
Библиотека <iostream>
использует #include <ios>
операторы , #include <streambuf>
#include <istream>
и #include <ostream>
инструкции.
Замечания
Объекты можно разделить на две группы:
cin
,cout
,cerr
иclog
ориентированы на байты, выполняя обычные передачи байтов во время.wcin
, ,wcout
wcerr
и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