C++ Базове введення/виведення: приклад Cout, Cin, Cerr

⚡ Розумний підсумок

C++ Операції введення та виведення базуються на потокових об'єктах, які переміщують дані у вигляді послідовностей байтів між програмами та пристроями, при цьому cin зчитує введені дані з клавіатури, а cout, cerr та clog записують вивід на екран.

  • 🔘 Потік: Вхідні та вихідні дані передаються у вигляді послідовностей байтів, які називаються потоками, переміщуючи дані між основною пам'яттю та пристроями.
  • 📥 Заголовкові файли: Бібліотеки iostream, iomanip та fstream визначають об'єкти та маніпулятори, що використовуються для базового вводу та виводу.
  • 🖨️ cout та cin: Об'єкт cout друкує значення з оператором вставки, тоді як cin зчитує значення з оператором ex.tracоператор ції.
  • ⚠️ cerr та засмічення: Обидва повідомляють про помилки, але cerr залишається небуферизованим для негайного відображення, тоді як clog спочатку буферизує повідомлення.
  • 🛠️ Обробка помилок: Перевірки good, bad, fail та eof зчитують стан потоку, тому невдалі операції безпечно перехоплюються.
  • 🤖 Допомога AI: Помічники ШІ-кодування, такі як GitHub Copilot, генерують шаблони cin та cout з короткого коментаря або назви функції.

C++ Базовий вхідний вихідний сигнал

Що таке потоки C++?

C++ надає користувачам ряд бібліотек, які вони можуть використовувати для виконання завдань введення/виведення. Ці завдання виконуються у формі послідовностей байтів, які в народі називаються потоками.

Потоки поділяються на два:

Види потоків

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

Як працюють потоки?

C++ потоки працюють наступним чином:

  1. Спочатку потік ініціалізується правильним типом.
  2. Далі слід вказати, де відбуватиметься введення/виведення, використовуючи вказівники get/put.
  3. Потрапивши в потрібне місце в потоці, ви можете виконувати завдання введення та виведення за допомогою операторів >> і << відповідно.

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

У файлі заголовка 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;
}

вихід:

std :: cout

Ось скріншот коду:

std :: cout

Code Пояснення:

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

std::cin

Об'єкт cin є екземпляром класу istream. Він зчитує вхідні дані з пристрою введення, клавіатури. Зазвичай він використовується разом з extracоператор ції (>>). Вихіднийtracоб'єкт ції відповідає за ексtracдані, введені через клавіатуру з об'єкта cin.

Приклад

У наступному прикладі показано, як використовувати ключове слово cin в C++:

#include <iostream>
using namespace std;
int main()
{
	int number;

	cout << "Enter a number:";
	cin >> number;
	cout << "\nYou entered: " << number;

	return 0;
}

вихід:

std::cin

Ось скріншот коду:

std::cin

Code Пояснення:

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

std::cerr

Об’єкт cerr формує стандартний потік помилок для виведення помилок C++. Cerr є екземпляром класу ostream. Об’єкт cerr не буферизується. Це означає, що він використовується, коли повідомлення про помилку має бути відображено негайно.

Оскільки він не буферизований, він не зберігає повідомлення про помилку для подальшого відображення. Він використовується разом із оператором вставки потоку (<<).

Приклад

#include <iostream>
using namespace std;
int main() {

	cerr << "An Error occurred!";

	return 0;
}

вихід:

std::cerr

Ось скріншот коду:

std::cerr

Code Пояснення:

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

std::clog

Об'єкт clog є екземпляром класу ostream. Він використовується для відображення помилок на стандартному дисплеї, моніторі. Він схожий на об’єкт cerr, але буферизується. Оскільки він буферизований, він зберігає повідомлення про помилку в буфері, доки буфер не буде заповнено/скинуто. Він використовується разом із оператором вставки потоку (<<).

Приклад

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

вихід:

std::clog

Ось скріншот коду:

std::clog

Code Пояснення:

  1. Включаючи файл заголовка iostream, у якому визначено об’єкт clog.
  2. Включення простору імен std, щоб ми могли використовувати його класи, не викликаючи його.
  3. Виклик функції main(). Логіку програми слід додати в її тіло. { позначає початок тіла функції.
  4. Використовуйте об’єкт clog, щоб надрукувати помилку на стандартному виводі, моніторі.
  5. Після успішного завершення програма повинна повернути значення.
  6. Кінець тіла функції 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;
}

Поширені запитання

Об'єкт cout є типобезпечним і використовує оператор вставки, тому він автоматично визначає тип кожного значення. Функція printf у мові C спирається на специфікатори формату, такі як %d, які повинні вручну зіставляти аргументи.

КолишнійtracОператор tion зупиняється на першому пробілі, тому cin зчитує лише одне слово. Щоб захопити цілий рядок з пробілами, викличте getline(cin, variable), яка зчитує до символу нового рядка.

Обидва починають новий рядок, але endl також щоразу очищує вихідний буфер, що може уповільнити цикли з активним циклом. Віддавайте перевагу простому новому рядку та зарезервуйте endl для випадків, коли буфер потрібно очистити негайно.

Об'єкти cin, cout, cerr та clog знаходяться в просторі імен std. Написання з використанням простору імен std дозволяє використовувати cout, а не std::cout. Великі проекти часто використовують явний префікс std, щоб уникнути конфліктів.

Включіть заголовок iomanip та використовуйте маніпулятори з cout. Маніпулятор setw резервує ширину поля, а setprecision встановлює кількість цифр, що відображаються, форматуючи числа та стовпці без зміни збережених значень.

Так. Оскільки cout та cerr — це окремі потоки, оболонка може перенаправляти звичайний вивід у файл, поки помилки все ще виводяться на екран. У коді rdbuf може вказувати потік на інший буфер.

Так. Помічники кодування на основі штучного інтелекту зчитують коментар або назву функції та створюють оператори cin та cout, а також iostream include та відформатований запит. RevПерегляд згенерованої потокової логіки для граничних випадків залишається розумним.

Так. Копілот GitHub завершує форматування cout, цикли перевірки cin та перевірки помилок cerr під час введення тексту. Це 2026 рік. C++ Розуміння коду додає розпізнавання семантичних символів, тому пропозиції щодо кількох файлів залишаються узгодженими.

Підсумуйте цей пост за допомогою: