Що таке потоки в C ++?
C ++ надає користувачам ряд бібліотек, які вони можуть використовувати для виконання завдань введення / виводу. Ці завдання виконуються у формі послідовностей байтів, які в народі називають потоками.
Потоки поділяються на два:
Види потоків
- Вхідний потік: це тип потоку, коли байти переходять від пристрою, такого як клавіатура, до основної пам'яті.
- Вихідний потік: це тип потоку, коли байти течуть у зворотному напрямку, тобто з основної пам'яті, а потім на пристрій, такий як екран дисплея.
У цьому підручнику з C ++ ви дізнаєтесь:
- Що таке потоки в C ++?
- Як працюють потоки?
- Таблиця функцій
- Файли заголовків C ++ для введення / виводу
- std :: cout
- std :: cin
- std :: cerr
- std :: clog
- Помилка обробки потоків вводу-виводу:
Як працюють потоки?
Потоки C ++ працюють наступним чином:
- Спочатку потік ініціалізується правильним типом.
- Далі, ви повинні вказати, де введення / вивід відбуватиметься за допомогою покажчиків get / put.
- Потрапивши в потрібне місце в потоці, ви можете виконувати завдання введення та виведення за допомогою операторів >> та << відповідно.
Таблиця функцій
Нижче наводяться функції, передбачені у файлі заголовка stream.h:
Клас | Функції |
Filebuf | Він встановлює файлові буфери для читання / запису. У ньому є функції close () і open () |
fstreambase | Це базовий клас для класів ifstream, fstream та ofstream. Його операції є загальними для потоків файлів. |
ifstream | Це клас потоку вхідних файлів для забезпечення операцій введення. |
з потоку | Це клас потоку вихідних файлів для забезпечення операцій виводу. |
fstream | Це клас потоку вводу / виводу. Він підтримує одночасні операції введення / виведення. |
Файли заголовків C ++ для введення / виводу
C ++ надає три бібліотеки, які постачаються з функціями для виконання основних завдань вводу-виводу. Вони включають:
- Iostream: це абревіатура для стандартного потоку вводу / виводу. Цей файл заголовка постачається з визначеннями для таких об'єктів, як cin / cout / cerr.
- Iomanip: Це абревіатура для вхідних / вихідних маніпуляторів. Бібліотека постачається з функціями, які можна використовувати для маніпулювання потоками. Він містить визначення таких об’єктів, як setw, setprecision та інші.
- Fstream: Це файл заголовка для опису потоку файлів. Він обробляє дані, які зчитуються з файлу як вхідні дані або які записуються у файл, вихідний.
Ключові слова cin і cout дуже популярні в C ++. Вони використовуються для отримання вхідних даних та друку вихідних даних, відповідно. Щоб використовувати їх, ви повинні включити в програму файл заголовка iostream. Причина полягає в тому, що вони визначені у цьому заголовковому файлі. Якщо не включити файл заголовка iostream, з’явиться помилка. Це виникає внаслідок відмови компілятора C ++ зрозуміти значення ключових слів.
Основними об’єктами, визначеними у файлі заголовка iostream, є cin, cout, cerr та clog. Давайте їх обговоримо.
std :: cout
Об'єкт cout є екземпляром класу iostream. Він використовується для отримання вихідних даних на стандартному пристрої виводу, яким зазвичай є екран. Він використовується разом з оператором вставки потоку (<<).
Приклад:
#includeusing namespace std;int main() {char welcome[] = "Welcome to Guru99";cout << welcome << endl;return 0;}
Вихід:
Ось скріншот коду:
Пояснення коду:
- Включіть файл заголовка iostream, де визначено об'єкт cout.
- Включіть std простір імен, щоб нам не довелося викликати його при використанні його класів.
- Виклик функції main (). Код програми повинен бути доданий у його тілі. Відкривається фігурна дужка {позначає початок її тіла.
- Створіть змінну символу з назвою welcome, щоб утримувати рядок Welcome to Guru99.
- Надрукуйте значення рядка привітання на консолі. Endl - це ключове слово C ++, що означає кінцевий рядок. Він рухає курсор, щоб розпочати друк тексту на наступному рядку.
- Програма повинна повертати значення після успішного виконання.
- Кінець тіла функції main ().
std :: cin
Об'єкт cin є екземпляром класу istream. Він зчитує введення з пристрою введення, клавіатури. Зазвичай він використовується разом з оператором екстракції (>>). Об'єкт вилучення відповідає за вилучення даних, введених через клавіатуру, з об'єкта cin.
Приклад:
Наступний приклад демонструє, як використовувати ключове слово cin у C ++:
#includeusing namespace std;int main(){int number;cout << "Enter a number:";cin >> number;cout << "\nYou entered: " << number;return 0;}
Вихід:
Ось скріншот коду:
Пояснення коду:
- Включіть у нашу програму файл заголовка iostream. Об'єкт cin визначений у цьому заголовковому файлі.
- Включіть простір імен std, щоб використовувати його класи. Вам не доведеться викликати std при використанні його класів.
- Виклик функції main (). Код програми повинен бути доданий у його тілі.
- Початок основної частини програми.
- Оголосіть цілочисельну змінну з іменем number.
- Роздрукуйте на екрані повідомлення, що пропонує користувачеві ввести номер.
- Зчитайте значення, введене користувачем на консолі, з клавіатури.
- Надрукуйте прочитане вище значення на консолі поряд з іншим текстом.
- Програма повинна повернути значення, якщо воно успішно виконується.
- Кінець тіла основної функції.
std :: cerr
Об'єкт cerr формує стандартний потік помилок для виведення помилок у C ++. Cerr - це екземпляр класу ostream. Об’єкт cerr не буферизований. Це означає, що він використовується, коли повідомлення про помилку має відображатися негайно.
Оскільки він не буферизований, він не зберігає повідомлення про помилку для подальшого відображення. Він використовується разом з оператором вставки потоку (<<).
Приклад:
#includeusing namespace std;int main() {cerr << "An Error occurred!";return 0;}
Вихід:
Ось скріншот коду:
Пояснення коду:
- Включіть файл заголовка iostream, де визначено об’єкт cerr.
- Включіть std простір імен, щоб нам не довелося викликати його при використанні його класів.
- Виклик функції main (). Логіка програми повинна бути додана до її тіла. Відкриваються фігурні дужки означають початок тіла функції.
- Використовуйте об’єкт cerr, щоб надрукувати помилку на консолі.
- Програма повинна повернути значення після успішного виконання.
- Кінець тіла основної функції.
std :: clog
Об'єкт clog є екземпляром класу ostream. Він використовується для відображення помилок на стандартному дисплеї, моніторі. Він схожий на об’єкт cerr, але буферизований. Оскільки воно буферизується, воно зберігає повідомлення про помилку в буфері, поки буфер не заповниться / не змиється. Він використовується разом з оператором вставки потоку (<<).
Приклад:
#includeusing 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 - ні.