В этой статье мы подробно обсудим операции ввода-вывода C++. Данные передаются в/из устройства вывода/ввода в виде последовательности байтов, называемой потоком. Поток, протекающий от устройства ввода, такого как клавиатура, в основную память, называется операцией ввода.
С другой стороны, потоки, которые передаются из основной памяти на устройство вывода, такое как экран, называются операциями вывода.
Файлы заголовков библиотеки ввода/вывода C++
C++ предоставляет следующие заголовочные файлы ввода-вывода:
Файл | Описание |
iostream | iostream определяет следующие объекты: cout-> стандартный вывод cin -> стандартный ввод clog — стандартный журнал (буферизованный) cerr — стандартная ошибка (небуферизованный) |
iomanip | iomanip определяет параметризованные манипуляторы потока, такие как setw и setprecision, которые помогают форматировать ввод-вывод. |
fstream | fstream помогает в обработке ввода-вывода файлов. |
Стандартный поток вывода (cout)
Стандартный поток вывода C++ — cout — это объект класса ostream , родителем которого является iostream. Cout используется с оператором « << » и также называется оператором вставки для вывода информации или данных на устройство вывода. Экран дисплея обычно является устройством вывода, к которому подключен объект cout.
В зависимости от используемых типов данных компилятор C++ определяет отображаемые данные, а также определяет тип оператора вставки, который будет использоваться для отображения данных.
Объект Cout и оператор вставки поддерживают встроенные типы данных C++, строковые значения и значения указателей.
Мы также можем использовать более одного оператора вставки вместе с cout в одном выражении.
Например,
cout<<«Привет, мир!!»<<«Доброе утро!!!»;
Когда «endl» используется в конце cout, это указывает на следующую строку.
Стандартный входной поток (cin)
Стандартный входной поток C++ — cin является объектом класса istream, который также является дочерним элементом класса iostream. Объект cin вместе с «>>», который также известен как оператор извлечения, используется для чтения данных с устройства ввода. Примером устройства ввода, к которому подключен cin, является клавиатура.
В соответствии с типом данных компилятор C++ определяет данные для чтения, а также определяет тип оператора извлечения, который будет использоваться для чтения и хранения данных. Как и cout, мы можем использовать более одного оператора извлечения в одном операторе cin.
Когда «endl» используется в конце оператора cin, это указывает на конец строки.
В приведенном ниже примере продемонстрировано использование cin и cout в C++:
1 2 3 4 5 6 7 8 9 10 11 |
#include <iostream> using namespace std; int main( ) { char str[] = "This is C++ basic Input Output"; int number; cout<<"Enter the number: "; cin>>number; cout<<"The number entered is: "<<number<<endl; cout << "Value of str is: " << str << endl; } |
Вывод данных:
1 2 3 |
Enter the number: 100 The number entered is: 100 Value of str is: This is C++ basic Input Output |
Введите число: 100
Введенное число: 100
Значение str: Это базовый ввод-вывод C++.
Как мы видим в приведенной выше программе, мы используем cin для чтения числа с клавиатуры и сохранения его в целочисленной переменной с именем «число». Затем с помощью cout мы отображаем это число, а также символьное сообщение.
Стандартные потоки ошибок (cerr) и стандартные журналы (clog)
И cerr, и clog являются объектами класса ostream, похожими на cout и cin. Clog и cerr используются для записи журналов и сообщений об ошибках, соответственно, в стандартные устройства журналов или ошибок, которые также могут быть экраном дисплея. Хотя оба являются членами stderr (стандартная ошибка), основное различие между clog и cerr заключается в том, что clog буферизуется.
Под буферизацией мы подразумеваем, что вывод собирается в переменную и сразу же записывается на диск. Небуферизованные объекты непрерывно записывают вывод на диск, не собирая его в переменную.
Clog используется для записи сообщений, которые не являются критическими, но нуждаются в надлежащем описании. Однако события или ошибки, которые слишком критичны, например, сбой системы, должны быть немедленно записаны в выходные данные. В этом случае мы используем cerr.
Использование операции ввода-вывода clog показано в следующем примере кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> #include <fstream> using namespace std; int main() { char fileName[] = "data.txt" ifstream infile(fileName); if(infile) cout << infile.rdbuf(); else clog << "Error while opening the file " << fileName << endl; return 0; } |
Вывод данных:
1 |
Error while opening the file data.txt |
Ошибка при открытии файла data.txt
Здесь мы указываем имя файла «data.txt» в переменной и пытаемся открыть этот файл. Если файл успешно открыт, то содержимое файла считывается в буфер. Если файл не может быть открыт, то операция clog выводит сообщение журнала.
Мы должны отметить, что clog также использует оператор вставки потока в качестве операции cout.
Использование операции cerr показано в приведенном ниже примере:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> #include <fstream> using namespace std; int main() { char fileName[] = "input.txt"; ifstream infile(fileName); if(infile) cout << infile.rdbuf(); else cerr << "Cannot open file:" << fileName <<endl; return 0; } |
Вывод данных:
1 |
Cannot open file:input.txt |
В приведенной выше программе мы пытаемся открыть другой файл «input.txt». Читаем файл, если он успешно открыт. Если открытие файла не удалось, то на стандартном устройстве, то есть на экране дисплея, отображается сообщение «не удается открыть input.txy».
Итог
Это все что мы хотели вам рассказать об основных операциях ввода/вывода в C++. В следующей статье мы обсудим еще несколько важных концепций C++, а точнее, поговорим об операторах new и delete в C++.
С Уважением, МониторБанк