Учебники

C ++ Basic Input / Output

Стандартные библиотеки C ++ предоставляют обширный набор возможностей ввода / вывода, которые мы увидим в следующих главах. В этой главе будут обсуждаться самые основные и наиболее распространенные операции ввода-вывода, необходимые для программирования на C ++.

C ++ ввод / вывод происходит в потоках, которые представляют собой последовательности байтов. Если байты передаются из устройства, такого как клавиатура, дисковод, сетевое соединение и т. Д., В основную память, это называется операцией ввода, и если байты передаются из основной памяти в устройство, такое как экран дисплея, принтер, дисковод или сетевое соединение и т. д., это называется операцией вывода .

Заголовочные файлы библиотеки ввода / вывода

Существуют следующие заголовочные файлы, важные для программ на C ++:

Sr.No Заголовочный файл, функция и описание
1

<iostream>

Этот файл определяет объекты cin, cout, cerr и clog , которые соответствуют стандартному входному потоку, стандартному выходному потоку, небуферизованному стандартному потоку ошибок и буферизованному стандартному потоку ошибок, соответственно.

2

<iomanip>

В этом файле объявляются службы, полезные для выполнения форматированного ввода-вывода с помощью так называемых параметризованных потоковых манипуляторов, таких как setw и setprecision .

3

<fstream>

Этот файл объявляет службы для управляемой пользователем обработки файлов. Мы обсудим это подробно в главе, связанной с файлами и потоками.

<iostream>

Этот файл определяет объекты cin, cout, cerr и clog , которые соответствуют стандартному входному потоку, стандартному выходному потоку, небуферизованному стандартному потоку ошибок и буферизованному стандартному потоку ошибок, соответственно.

<iomanip>

В этом файле объявляются службы, полезные для выполнения форматированного ввода-вывода с помощью так называемых параметризованных потоковых манипуляторов, таких как setw и setprecision .

<fstream>

Этот файл объявляет службы для управляемой пользователем обработки файлов. Мы обсудим это подробно в главе, связанной с файлами и потоками.

Стандартный поток вывода (cout)

Предопределенный объект cout является экземпляром класса ostream . Говорят, что объект cout «подключен» к стандартному устройству вывода, которым обычно является экран дисплея. Cout используется вместе с оператором вставки потока, который записывается как <<, что на два знака меньше, чем показано в следующем примере.

Live Demo

#include <iostream>
 
using namespace std;
 
int main() {
   char str[] = "Hello C++";
 
   cout << "Value of str is : " << str << endl;
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

Value of str is : Hello C++

Компилятор C ++ также определяет тип данных переменной для вывода и выбирает соответствующий оператор вставки потока для отображения значения. Оператор << перегружен для вывода элементов данных встроенных типов integer, float, double, строк и значений указателей.

Оператор вставки << может использоваться более одного раза в одном выражении, как показано выше, а endl используется для добавления новой строки в конце строки.

Стандартный поток ввода (cin)

Предопределенный объект cin является экземпляром класса istream . Говорят, что объект cin прикреплен к стандартному устройству ввода, которым обычно является клавиатура. Cin используется вместе с оператором извлечения потока, который записывается как >>, что на два больше знака, как показано в следующем примере.

Live Demo

#include <iostream>
 
using namespace std;
 
int main() {
   char name[50];
 
   cout << "Please enter your name: ";
   cin >> name;
   cout << "Your name is: " << name << endl;
 
}

Когда приведенный выше код скомпилирован и выполнен, вам будет предложено ввести имя. Вы вводите значение и затем нажимаете ввод, чтобы увидеть следующий результат —

Please enter your name: cplusplus
Your name is: cplusplus

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

Оператор извлечения потока >> может использоваться более одного раза в одном выражении. Чтобы запросить более одного элемента данных, вы можете использовать следующее:

cin >> name >> age;

Это будет эквивалентно следующим двум утверждениям —

cin >> name;
cin >> age;

Стандартный поток ошибок (cerr)

Предопределенный объект cerr является экземпляром класса ostream . Считается, что объект cerr присоединен к стандартному устройству ошибок, которое также является экраном дисплея, но объект cerr не буферизован, и каждая вставка потока в cerr приводит к немедленному отображению его вывода.

Cerr также используется вместе с оператором вставки потока, как показано в следующем примере.

Live Demo

#include <iostream>
 
using namespace std;
 
int main() {
   char str[] = "Unable to read....";
 
   cerr << "Error message : " << str << endl;
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

Error message : Unable to read....

Стандартный поток журнала (засорение)

Предопределенный объект clog является экземпляром класса ostream . Говорят, что объект засорения прикреплен к стандартному устройству ошибки, которое также является экраном дисплея, но засорение объекта буферизуется. Это означает, что каждая вставка для засорения может привести к тому, что ее вывод будет храниться в буфере до тех пор, пока буфер не будет заполнен или пока буфер не будет очищен.

Засорение также используется вместе с оператором вставки потока, как показано в следующем примере.

Live Demo

#include <iostream>
 
using namespace std;
 
int main() {
   char str[] = "Unable to read....";
 
   clog << "Error message : " << str << endl;
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

Error message : Unable to read....

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