C++ Базове введення/виведення: приклад Cout, Cin, Cerr
Що таке потоки C++?
C++ надає користувачам ряд бібліотек, які вони можуть використовувати для виконання завдань введення/виведення. Ці завдання виконуються у формі послідовностей байтів, які в народі називаються потоками.
Потоки поділяються на два:
Види потоків
- Вхідний потік: Це тип потоку, коли байти надходять від пристрою, наприклад клавіатури, до основної пам’яті.
- Вихідний потік: Це тип потоку, де байти йдуть у протилежному напрямку, тобто з основної пам’яті, а потім на пристрій, наприклад екран дисплея.
Як працюють потоки?
C++ потоки працюють наступним чином:
- Спочатку потік ініціалізується правильним типом.
- Далі слід вказати, де I / O відбуватиметься за допомогою покажчиків get/put.
- Потрапивши в потрібне місце в потоці, ви можете виконувати завдання введення та виведення за допомогою операторів >> і << відповідно.
Таблиця функцій
У файлі заголовка stream.h надаються такі функції:
Клас | Функції |
---|---|
Filebuf | Він встановлює файлові буфери для читання/запису. У ньому є функції close() і open(). |
fstreambase | Це базовий клас для класів ifstream, fstream і ofstream. Його операції є загальними для файлових потоків. |
ifstream | Це клас потоку вхідних файлів для забезпечення операцій введення. |
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 <iostream> using namespace std; int main() { char welcome[] = "Welcome to Guru99"; cout << welcome << endl; return 0; }
вихід:
Ось скріншот коду:
Пояснення коду:
- Включіть файл заголовка iostream, де визначено об’єкт cout.
- Включіть простір імен std, щоб нам не потрібно було викликати його під час використання його класів.
- Виклик функції main(). Код програми слід додати в її тіло. Відкриваюча фігурна дужка { позначає початок його тіла.
- Створіть символьну змінну з назвою Welcome, щоб зберігати рядок Welcome to Guru99.
- Вивести значення рядка привітання на консолі. Endl - це a 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, щоб вивести повідомлення про помилку на консолі.
- Після успішного виконання програма повинна повернути значення.
- Кінець тіла основної функції.
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() - поверне істину, якщо все гаразд.
- 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 цього не робить.