C++ Базовый ввод/вывод: пример Cout, Cin, Cerr
Что такое потоки C++?
C++ предоставляет пользователям ряд библиотек, которые они могут использовать для выполнения задач ввода/вывода. Эти задачи выполняются в виде последовательностей байтов, обычно называемых потоками.
Потоки делятся на два:
Типы потоков
- Входной поток: Это тип потока, в котором байты передаются из устройства, такого как клавиатура, в основную память.
- Выходной поток: Это тип потока, в котором байты передаются в противоположном направлении, то есть из основной памяти затем на устройство, такое как экран дисплея.
Как работают потоки?
C++ потоки работают следующим образом:
- Сначала поток инициализируется правильным типом.
- Далее вам следует указать, где находится Ввода / вывода будет происходить с использованием указателей get/put.
- Достигнув нужного места в потоке, вы можете выполнять задачи ввода и вывода с помощью операторов >> и << соответственно.
Таблица функций
Ниже приведены функции, представленные в заголовочном файлеstream.h:
Класс | функции |
---|---|
Файлбуф | Он устанавливает файловые буферы для чтения/записи. В нем есть функции close() и open(). |
fstreambase | Это базовый класс для классов ifstream, fstream и ofstream. Его операции являются общими для файловых потоков. |
если поток | Это класс потока входного файла для выполнения операций ввода. |
из потока | Это класс потока выходного файла для выполнения операций вывода. |
fstream | Это класс потока ввода/вывода. Он поддерживает одновременные операции ввода/вывода. |
C++ Заголовочные файлы для ввода/вывода
C++ предоставляет три библиотеки с функциями для выполнения основных задач ввода/вывода. Они включают в себя:
- Иострим: Это аббревиатура стандартного потока ввода/вывода. Этот заголовочный файл содержит определения таких объектов, как cin/cout/cerr.
- Йоманип: Это аббревиатура от манипуляторов ввода/вывода. Библиотека поставляется с функциями, которые можно использовать для манипулирования потоками. Он содержит определения таких объектов, как setw, setprecision и других.
- Фстрим: Это заголовочный файл для описания файлового потока. Он обрабатывает данные, которые читаются из файла в качестве входных данных или записываются в файл (выходные данные).
Ключевые слова cin и cout очень популярны в C++. Они используются для приема входных данных и вывода на печать соответственно. Чтобы использовать их, вы должны включить заголовочный файл iostream в свою программу. Причина в том, что они определены в этом заголовочном файле. Если не включить файл заголовка iostream, возникнет ошибка. Это является результатом неудачи со стороны C++ компилятор, чтобы понять значение ключевых слов.
Основными объектами, определенными в заголовочном файле iostream, являются cin, cout, cerr и clog. Давайте обсудим их.
std :: cout
Объект cout является экземпляром класса iostream. Он используется для вывода вывода на стандартное устройство вывода, которым обычно является экран. Он используется вместе с оператором вставки потока (<<).
Пример
#include <iostream> using namespace std; int main() { char welcome[] = "Welcome to Guru99"; cout << welcome << endl; return 0; }
Вывод:
Вот скриншот кода:
Пояснение к коду:
- Включите файл заголовка iostream, в котором определен объект cout.
- Включите пространство имен std, чтобы нам не приходилось вызывать его при использовании его классов.
- Вызовите функцию main(). Программный код должен быть добавлен в его тело. Открывающая фигурная скобка { отмечает начало тела.
- Создайте символьную переменную с именем Welcome для хранения строки Welcome to Guru99.
- Выведите значение строки Welcome на консоль. Конец - это C++ ключевое слово, означающее конечную строку. Он перемещает курсор, чтобы начать печать текста на следующей строке.
- Программа должна вернуть значение после успешного выполнения.
- Конец тела функции main().
std :: cin
Объект cin является экземпляром класса istream. Он считывает ввод с устройства ввода — клавиатуры. Обычно он используется вместе с оператором извлечения (>>). Объект извлечения отвечает за извлечение данных, введенных с клавиатуры, из объекта cin.
Пример
В следующем примере показано, как использовать ключевое слово cin в C++:
#include <iostream> using namespace std; int main() { int number; cout << "Enter a number:"; cin >> number; cout << "\nYou entered: " << number; return 0; }
Вывод:
Вот скриншот кода:
Пояснение к коду:
- Включите заголовочный файл iostream в нашу программу. Объект cin определен в этом заголовочном файле.
- Включите пространство имен std для использования его классов. Вам не придется вызывать std при использовании его классов.
- Вызовите функцию main(). Программный код должен быть добавлен в его тело.
- Начало тела программы.
- Объявить целочисленная переменная названный номер.
- Распечатайте на экране сообщение, предлагающее пользователю ввести номер.
- Считайте с клавиатуры значение, введенное пользователем на консоли.
- Распечатайте значение, прочитанное выше, на консоли вместе с другим текстом.
- Программа должна вернуть значение, если она выполняется успешно.
- Конец тела основной функции.
std :: cerr
Объект cerr формирует стандартный поток ошибок для вывода ошибок в C++. Cerr — это экземпляр класса ostream. Объект cerr не буферизован. Это означает, что он используется, когда сообщение об ошибке должно быть отображено немедленно.
Поскольку он не буферизован, он не сохраняет сообщения об ошибках для последующего отображения. Он используется вместе с оператором вставки потока (<<).
Пример
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
Вывод:
Вот скриншот кода:
Пояснение к коду:
- Включите файл заголовка iostream, в котором определен объект cerr.
- Включите пространство имен std, чтобы нам не приходилось вызывать его при использовании его классов.
- Вызовите функцию main(). Логика программы должна быть добавлена в ее тело. Открывающая фигурная скобка отмечает начало тела функции.
- Используйте объект cerr, чтобы вывести сообщение об ошибке на консоль.
- Программа должна вернуть значение после успешного выполнения.
- Конец тела основной функции.
станд:: засорить
Объект clog является экземпляром класса ostream. Он используется для отображения ошибок на стандартном дисплее монитора. Он похож на объект cerr, но буферизован. Поскольку он буферизован, он сохраняет сообщение об ошибке в буфере до тех пор, пока буфер не будет заполнен/очищен. Он используется вместе с оператором вставки потока (<<).
Пример
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
Вывод:
Вот скриншот кода:
Пояснение к коду:
- Включая заголовочный файл iostream, в котором определен объект засорения.
- Включаем пространство имен std, чтобы мы могли использовать его классы, не вызывая его.
- Вызов функции main(). Логика программы должна быть добавлена в ее тело. { отмечает начало тела функции.
- Используйте объект clog, чтобы вывести сообщение об ошибке на стандартный вывод — монитор.
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции main().
Обработка ошибок с потоками ввода-вывода
Чтобы проверить, действителен поток или нет, вы можете использовать его как логическое значение.
Вот пример:
ifstream file( "myfile.txt" ); if ( ! file ) { cout << "File NOT opened!" << endl; }
Чтобы получить более подробную информацию о статусе потока, вы можете использовать эти функции:
- Good() — вернет true, если все в порядке.
- bad() — вернет true, если произойдет фатальная ошибка.
- fail() — вернет true после неудачной операции с потоком.
- eof() — вернет true, если достигнет конца файла.
Чтобы узнать, не удалась ли конкретная операция чтения/записи, проверьте результат чтения.
Например, чтобы проверить, ввел ли пользователь допустимое целое число, сделайте следующее:
int p; if ( cin >> p ) { cout << "Enter valid number" << endl; }
Резюме
- Задачи ввода и вывода In C++ выполняются посредством последовательности байтов. Байты называются потоками.
- Во входном потоке байты передаются от устройства ввода, такого как клавиатура, в основную память.
- В потоке вывода байты из основной памяти затем передаются на устройство вывода, например монитор.
- Объект cin является экземпляром класса istream. Он считывает ввод с устройства ввода, такого как клавиатура.
- Объект cout является экземпляром класса ostream. Он производит вывод на устройства вывода, такие как монитор.
- Объект cerr является экземпляром класса ostream. Он отображает объекты ошибок на мониторе.
- Объект clog является экземпляром класса ostream. Он отображает сообщения об ошибках на устройствах вывода.
- Объект clog буферизует сообщения об ошибках, а объект cerr — нет.