Базовый ввод/вывод C++:пример Cout, Cin, Cerr
Что такое потоки в C++?
C++ предоставляет пользователям ряд библиотек, которые они могут использовать для выполнения задач ввода/вывода. Эти задачи выполняются в виде последовательностей байтов, обычно называемых потоками.
Потоки делятся на два:
Типы потоков
- Входной поток: Это тип потока, при котором байты передаются от устройства, например клавиатуры, в основную память.
- Выходной поток: Это тип потока, в котором байты идут в обратном направлении, то есть из основной памяти в устройство, такое как экран дисплея.
Из этого руководства по C++ вы узнаете:
- Что такое потоки в C++?
- Как работают потоки?
- Таблица функций
- Файлы заголовков C++ для ввода/вывода
- стандартный::cout
- стандартный::cin
- стандартный::cerr
- стандартный::засор
- Обработка ошибок с потоками ввода-вывода:
Как работают потоки?
Потоки C++ работают следующим образом:
- Сначала поток инициализируется с правильным типом.
- Далее вы должны указать, где будет происходить ввод-вывод, используя указатели get/put.
- После того, как вы доберетесь до нужного места в потоке, вы сможете выполнять задачи ввода и вывода с помощью операторов>> и <<соответственно.
Таблица функций
Ниже приведены функции, представленные в заголовочном файле stream.h:
Заголовочные файлы C++ для ввода/вывода
C++ предоставляет три библиотеки с функциями для выполнения основных задач ввода/вывода. К ним относятся:
- Иострим: Это аббревиатура от стандартного потока ввода/вывода. Этот заголовочный файл содержит определения таких объектов, как cin/cout/cerr.
- Иоманип: Это аббревиатура от манипуляторов ввода/вывода. Библиотека поставляется с функциями, которые можно использовать для управления потоками. Он содержит определения таких объектов, как setw, setprecision и других.
- Fstream: Это заголовочный файл для описания файлового потока. Он обрабатывает данные, которые считываются из файла как входные данные или которые записываются в файл, как выходные данные.
Ключевые слова cin и cout очень популярны в C++. Они используются для получения входных данных и печати выходных данных соответственно. Чтобы использовать их, вы должны включить заголовочный файл iostream в свою программу. Причина в том, что они определены в этом заголовочном файле. Если не включить заголовочный файл iostream, возникнет ошибка. Это происходит из-за того, что компилятор C++ не может понять значение ключевых слов.
Основными объектами, определенными в заголовочном файле iostream, являются cin, cout, cerr и clog. Давайте обсудим их.
стандартный::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 на консоль. Endl — это ключевое слово C++, означающее конечную строку. Он перемещает курсор, чтобы начать печать текста на следующей строке.
- Программа должна возвращать значение после успешного выполнения.
- Конец тела функции main().
стандартный::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(). Код программы должен быть добавлен в его тело.
- Начало тела программы.
- Объявите целочисленную переменную с именем number.
- Вывести на экран сообщение, предлагающее пользователю ввести число.
- Прочитайте значение, введенное пользователем на консоли, с клавиатуры.
- Распечатайте значение, прочитанное выше, на консоли вместе с другим текстом.
- При успешном выполнении программа должна вернуть значение.
- Конец тела основной функции.
стандартный::cerr
Объект cerr формирует стандартный поток ошибок для вывода ошибок в C++. Cerr является экземпляром класса ostream. Объект cerr не буферизован. Это означает, что он используется, когда сообщение об ошибке должно отображаться немедленно.
Поскольку он небуферизован, он не сохраняет сообщение об ошибке для последующего отображения. Он используется вместе с оператором вставки потока (<<).
Пример:
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
Вывод:
Вот скриншот кода:
Пояснение кода:
- Включите заголовочный файл iostream, в котором был определен объект cerr.
- Включите пространство имен std, чтобы нам не приходилось вызывать его при использовании его классов.
- Вызовите функцию main(). Логика программы должна быть добавлена в ее тело. Открывающая фигурная скобка отмечает начало тела функции.
- Используйте объект cerr для вывода сообщения об ошибке на консоль.
- При успешном выполнении программа должна возвращать значение.
- Конец тела основной функции.
std::clog
Объект clog является экземпляром класса ostream. Используется для отображения ошибок на стандартном дисплее, мониторе. Он похож на объект cerr, но буферизован. Поскольку он буферизован, он сохраняет сообщение об ошибке в буфере до тех пор, пока буфер не будет заполнен/сброшен. Он используется вместе с оператором вставки потока (<<).
Пример:
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
Вывод:
Вот скриншот кода:
Пояснение кода:
- Включая заголовочный файл iostream, в котором определен объект clog.
- Включая пространство имен 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; }
Обзор
- Задачи ввода и вывода В C++ выполняются с помощью последовательности байтов. Байты называются потоками.
- Во входном потоке байты передаются от устройства ввода, такого как клавиатура, в основную память.
- В выходном потоке байты из основной памяти передаются на устройство вывода, такое как монитор.
- Объект cin является экземпляром класса istream. Он считывает ввод с устройства ввода, такого как клавиатура.
- Объект cout является экземпляром класса ostream. Он производит вывод на устройства вывода, такие как монитор.
- Объект cerr является экземпляром класса ostream. Он отображает объекты ошибок на мониторе.
- Объект clog является экземпляром класса ostream. Он отображает сообщения об ошибках на устройствах вывода.
- Объект clog буферизует сообщения об ошибках, а объект cerr — нет.
Язык C