Базовый ввод / вывод C ++: пример Cout, Cin, Cerr

Содержание:

Anonim

Что такое потоки в C ++?

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

Потоки делятся на два:

Типы потоков

  • Входной поток: это тип потока, в котором байты передаются от устройства, такого как клавиатура, в основную память.
  • Выходной поток: это тип потока, в котором байты текут в противоположном направлении, то есть из основной памяти, а затем на устройство, такое как экран дисплея.

В этом руководстве по C ++ вы узнаете:

  • Что такое потоки в C ++?
  • Как работают потоки?
  • Таблица функций
  • Заголовочные файлы C ++ для ввода / вывода
  • std :: cout
  • std :: cin
  • std :: cerr
  • std :: clog
  • Обработка ошибок с потоками ввода-вывода:

Как работают потоки?

Потоки C ++ работают следующим образом:

  1. Сначала поток инициализируется правильным типом.
  2. Затем вы должны указать, где будет происходить ввод-вывод, используя указатели получения / ввода.
  3. Попав в нужное место в потоке, вы можете выполнять задачи ввода и вывода, используя операторы >> и << соответственно.

Таблица функций

В заголовочном файле stream.h представлены следующие функции:

Учебный класс Функции
Filebuf Он устанавливает файловые буферы на чтение / запись. В нем есть функции close () и open ().
fstreambase Это базовый класс для классов ifstream, fstream и ofstream. Его операции являются общими для файловых потоков.
если поток Это класс потока входного файла для обеспечения операций ввода.
из потока Это класс потока выходного файла для обеспечения операций вывода.
fstream Это класс потока ввода / вывода. Он поддерживает одновременные операции ввода / вывода.

Заголовочные файлы C ++ для ввода / вывода

C ++ предоставляет три библиотеки с функциями для выполнения основных задач ввода / вывода. Они включают:

  • Iostream: это аббревиатура от стандартного потока ввода / вывода. Этот заголовочный файл содержит определения таких объектов, как cin / cout / cerr.
  • Иоманип: это аббревиатура от манипуляторов ввода / вывода. В библиотеке есть функции, которые можно использовать для управления потоками. Он содержит определения для таких объектов, как setw, setprecision и других.
  • Fstream: это файл заголовка для описания файлового потока. Он обрабатывает данные, которые считываются из файла как входные или записываются в файл, как выходные данные.

Ключевые слова cin и cout очень популярны в C ++. Они используются для ввода и вывода на печать соответственно. Чтобы использовать их, вы должны включить в свою программу файл заголовка iostream. Причина в том, что они определены в этом заголовочном файле. Отсутствие заголовочного файла iostream приведет к ошибке. Это происходит из-за того, что компилятор C ++ не понимает значения ключевых слов.

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

std :: cout

Объект cout является экземпляром класса iostream. Он используется для вывода на стандартное устройство вывода, которым обычно является экран. Он используется вместе с оператором вставки потока (<<).

Пример:

#include using namespace std;int main() {char welcome[] = "Welcome to Guru99";cout << welcome << endl;return 0;}

Выход:

Вот скриншот кода:

Пояснение к коду:

  1. Включите файл заголовка iostream, в котором определен объект cout.
  2. Включите пространство имен std, чтобы нам не приходилось вызывать его при использовании его классов.
  3. Вызовите функцию main (). Программный код должен быть добавлен в его тело. Открывающая фигурная скобка {отмечает начало его тела.
  4. Создайте символьную переменную с именем welcome, которая будет содержать строку Welcome to Guru99.
  5. Выведите на консоль значение строки welcome. Endl - это ключевое слово C ++, означающее конец строки. Он перемещает курсор, чтобы начать печать текста на следующей строке.
  6. Программа должна вернуть значение при успешном выполнении.
  7. Конец тела функции main ().

std :: cin

Объект cin является экземпляром класса istream. Он считывает ввод с устройства ввода, клавиатуры. Обычно он используется вместе с оператором извлечения (>>). Объект извлечения отвечает за извлечение данных, введенных с клавиатуры, из объекта cin.

Пример:

В следующем примере показано, как использовать ключевое слово cin в C ++:

#include using namespace std;int main(){int number;cout << "Enter a number:";cin >> number;cout << "\nYou entered: " << number;return 0;}

Выход:

Вот скриншот кода:

Пояснение к коду:

  1. Включите файл заголовка iostream в нашу программу. В этом заголовочном файле определен объект cin.
  2. Включите пространство имен std, чтобы использовать его классы. Вам не нужно будет вызывать std при использовании его классов.
  3. Вызовите функцию main (). Программный код должен быть добавлен в его тело.
  4. Старт тела программы.
  5. Объявите целочисленную переменную с именем number.
  6. Распечатайте сообщение на экране, предлагающее пользователю ввести число.
  7. Считайте значение, введенное пользователем на консоли, с клавиатуры.
  8. Напечатайте значение, указанное выше, на консоли рядом с другим текстом.
  9. Программа должна вернуть значение, если она выполняется успешно.
  10. Конец тела основной функции.

std :: cerr

Объект cerr формирует стандартный поток ошибок для вывода ошибок в C ++. Cerr - это экземпляр класса ostream. Объект cerr не буферизован. Это означает, что он используется, когда сообщение об ошибке должно отображаться немедленно.

Поскольку он не буферизован, он не сохраняет сообщение об ошибке для последующего отображения. Он используется вместе с оператором вставки потока (<<).

Пример:

#include using namespace std;int main() {cerr << "An Error occurred!";return 0;}

Выход:

Вот скриншот кода:

Пояснение к коду:

  1. Включите файл заголовка iostream, в котором был определен объект cerr.
  2. Включите пространство имен std, чтобы нам не приходилось вызывать его при использовании его классов.
  3. Вызовите функцию main (). Логика программы должна быть добавлена ​​в ее тело. Открывающая фигурная скобка отмечает начало тела функции.
  4. Используйте объект cerr, чтобы вывести ошибку на консоль.
  5. Программа должна возвращать значение при успешном выполнении.
  6. Конец тела основной функции.

std :: clog

Объект clog является экземпляром класса ostream. Используется для отображения ошибок на стандартном дисплее, мониторе. Он похож на объект cerr, но находится в буфере. Поскольку он буферизован, он сохраняет сообщение об ошибке в буфере до тех пор, пока буфер не будет заполнен / очищен. Он используется вместе с оператором вставки потока (<<).

Пример:

#include using namespace std;int main() {clog << "An Error occurred!";return 0;}

Выход:

Вот скриншот кода:

Пояснение к коду:

  1. Включая файл заголовка iostream, в котором определен объект засорения.
  2. Включение пространства имен std, чтобы мы могли использовать его классы, не вызывая его.
  3. Вызов функции main (). Логика программы должна быть добавлена ​​в ее тело. {Отмечает начало тела функции.
  4. Используйте объект засорения, чтобы вывести ошибку на стандартный вывод, монитор.
  5. Программа должна вернуть значение после успешного завершения.
  6. Конец тела функции main ().

Обработка ошибок с потоками ввода-вывода:

Чтобы проверить, действителен ли поток, вы можете использовать его как логическое значение.

Вот пример:

ifstream file( "myfile.txt" );if ( ! file ){cout << "File NOT opened!" << endl;}

Чтобы получить более подробную информацию о статусе потока, вы можете использовать следующие функции:

  • good () - вернет истину, если все в порядке.
  • bad () - вернет истину в случае фатальной ошибки.
  • fail () - вернет истину после неудачной операции с потоком.
  • eof () - вернет истину, если достигнет конца файла.

Чтобы узнать, не удалась ли конкретная операция чтения / записи, проверьте результат чтения.

Например, чтобы проверить, ввел ли пользователь действительное целое число, сделайте следующее:

int p;if ( cin >> p ){cout << "Enter valid number" << endl;}

Резюме

  • Задачи ввода и вывода в C ++ выполняются через последовательность байтов. Байты называются потоками.
  • Во входном потоке байты перетекают от устройства ввода, например клавиатуры, в основную память.
  • В потоке вывода байты из основной памяти затем передаются на устройство вывода, такое как монитор.
  • Объект cin является экземпляром класса istream. Он считывает ввод с устройства ввода, такого как клавиатура.
  • Объект cout является экземпляром класса ostream. Он производит вывод на устройства вывода, такие как монитор.
  • Объект cerr является экземпляром класса ostream. Он отображает на мониторе объекты ошибок.
  • Объект clog является экземпляром класса ostream. Он отображает сообщения об ошибках на устройствах вывода.
  • Объект clog буферизует сообщения об ошибках, а объект cerr - нет.