Вивід даних на екран
Від «Hello, World!» до реального виводу
Ви вже знаєте, що команда cout << виводить текст на екран. Але програми рідко обмежуються одним рядком. У реальних проєктах потрібно виводити таблиці, форматовані звіти, повідомлення з відступами та спеціальними символами. У цьому розділі ми детально розберемо можливості виводу в C++.
Оператор cout
Три умови для роботи cout
Перш ніж використовувати cout, необхідно забезпечити три речі:
Підключити бібліотеку
#include <iostream>
Бібліотека iostream (input/output stream — потік введення/виведення) містить визначення cout.
Підключити простір імен
using namespace std;
Команда cout знаходиться в стандартному просторі імен std. Без цього рядка довелося б писати std::cout.
Записати текст у лапках
cout << "Текст для виведення";
Рядок, який ви хочете вивести, обов'язково записується в подвійних лапках " ".
Базовий синтаксис
cout << "Перший текст"; // Вивід одного рядка
cout << "Частина 1" << " і 2"; // Конкатенація через <<
cout << "Рядок 1\n" << "Рядок 2\n"; // Кілька рядків
Оператор << можна використовувати кілька разів поспіль, з'єднуючи різні фрагменти тексту:
cout << "My name is" << " — Ira\n";
cout << "I'm from Odessa\n";
cout << "My eyes are blue" << "\n" << "That's all!!!";
Результат на екрані:
My name is — Ira
I'm from Odessa
My eyes are blue
That's all!!!
Escape-послідовності
Що це таке?
Іноді потрібно вивести на екран спеціальні символи: перенести текст на новий рядок, додати табуляцію або вивести зворотну рису. Для цього існують Escape-послідовності (escape sequences) — комбінації символу \ (зворотна риса) та літери, що визначає дію.
Таблиця основних Escape-послідовностей
| Послідовність | Назва | Дія |
|---|---|---|
\n | New Line | Перехід на новий рядок |
\t | Horizontal Tab | Табуляція (горизонтальний відступ) |
\\ | Backslash | Вивести символ зворотної риси \ |
\" | Double Quote | Вивести подвійні лапки " |
\' | Single Quote | Вивести одинарні лапки ' |
\b | Backspace | Видалити останній виведений символ |
Навіщо потрібні \\, \" та \'?
На перший погляд, це дивно — навіщо «екранувати» такі прості символи? Відповідь проста: всі ці символи мають спеціальне значення в C++.
Наприклад, лапки " позначають початок і кінець рядка. Якщо ви хочете вивести текст з лапками всередині:
// Компілятор вважає, що рядок закінчується після "was "
cout << "The Man in red was "old friend" of John...";
// Escape-послідовність \" виводить лапки як символ
cout << "The Man in red was \"old friend\" of John...";
У першому випадку компілятор «побачить» рядок "The Man in red was " і не зрозуміє, що далі. У другому — \" каже компілятору: «це просто символ лапок, а не кінець рядка».
Де розміщувати Escape-послідовності?
Escape-послідовність завжди має бути всередині лапок, тому що це текст:
// ✅ Правильно — Escape-послідовності всередині лапок
cout << "Рядок 1\n";
cout << "\tВідступ\n";
cout << "Шлях: C:\\Users\\file.txt\n";
// ❌ Помилка — \n поза лапками не працює так
cout << "Текст" \n; // Помилка!
Практичний приклад: Вивід таблиці
Напишемо програму, що виводить форматовану довідку з Escape-послідовностями:
#include <iostream>
using namespace std;
int main()
{
cout << "\t\t\t\tEscape Sequences\n";
cout << "\n";
cout << "\t\t\\b" << "\tBackspace\n";
cout << "\n";
cout << "\t\t\\n" << "\tNew line\n";
cout << "\n";
cout << "\t\t\\t" << "\tHorizontal tab\n";
cout << "\n";
cout << "\t\t\\\\" << "\tBackslash \\\n";
cout << "\n";
cout << "\t\t\\\"" << "\tDouble quotation mark \"\n";
cout << "\n";
cout << "\t\t\\'" << "\tSingle quotation mark \'\n";
return 0;
}
Розберемо ключові моменти:
- Рядок 7: Чотири
\tстворюють великий відступ для заголовка,\nпереносить на новий рядок - Рядок 9:
\\bвиводить символи\bяк текст (а не як команду backspace), тому що перший\«екранує» другий - Рядок 15:
\\\\— потрібно чотири зворотні риси, щоб вивести дві: кожна пара\\виводить одну\
\ як символ, потрібно написати \\. Щоб вивести \\, потрібно написати \\\\. І так далі — кількість \ у коді подвоюється.Raw-рядки (C++11)
Починаючи з C++11, з'явився зручніший спосіб виводити спеціальні символи — raw-рядки (необроблені рядки). У raw-рядку всі символи трактуються буквально, без обробки Escape-послідовностей.
Синтаксис
R"(текст_рядка)"
R— позначає raw-рядок- Вміст обов'язково виділяється дужками
( )
Приклади
// Звичайний рядок: \n інтерпретується як перенос рядка
cout << "hello\nworld";
// Вивід:
// hello
// world
// Raw-рядок: \n виводиться як текст
cout << R"(hello\nworld)";
// Вивід: hello\nworld
// Raw-рядок з лапками — не потрібно екранувати
cout << R"("Test 'string'\t")";
// Вивід: "Test 'string'\t"
// Raw-рядок з дужками
cout << R"((Such brackets))";
// Вивід: (Such brackets)
- Шляхи до файлів:
R"(C:\Users\Documents\file.txt)"замість"C:\\Users\\Documents\\file.txt" - Регулярні вирази (regular expressions)
- Будь-який текст з великою кількістю спеціальних символів
Кирилиця в консолі Windows
cout << "Утро";
// На екрані може з'явитися: μЄЁю
Практичні завдання
Рівень 1 — Базовий
Що буде виведено на екран при виконанні кожної команди?
cout << "One\tTwo\tThree\n";
cout << "Path: C:\\Program Files\\App\n";
cout << "He said: \"Hello!\"\n";
cout << "Line1\nLine2\nLine3";
Запишіть очікуваний результат, а потім перевірте в Visual Studio.
Наступний код містить помилки в рядках виводу. Знайдіть та виправте їх:
cout << "File: C:\new\test.txt\n";
cout << "She said: "Hi!" to me\n";
cout << This is a text;
Рівень 2 — Логічний
Напишіть програму, яка виводить на екран таблицю множення числа 7 у красиво оформленому вигляді:
===========================
Multiplication Table: 7
===========================
7 x 1 = 7
7 x 2 = 14
7 x 3 = 15
...
7 x 10 = 70
===========================
Використовуйте \t для вирівнювання стовпчиків.
Напишіть одну й ту саму програму двома способами — з Escape-послідовностями та з raw-рядками. Програма має вивести:
Path: C:\Users\Documents\report.txt
Quote: "To be, or not to be"
Tab: separated values
Порівняйте читабельність обох варіантів.
Рівень 3 — Творчий
Створіть програму, яка виводить на екран ASCII-арт — будь-який малюнок, зроблений з текстових символів. Наприклад, будиночок:
/\
/ \
/ \
/______\
| __ |
| | | |
|_|__|_|
Використовуйте \t для відступів, \\ для зворотних рис та \n для переходу на нові рядки.
Підсумок
📌 cout <<
#include <iostream> та using namespace std;. Текст вказується в подвійних лапках.📌 Escape-послідовності
\ для форматування: \n — новий рядок, \t — табуляція, \\ — зворотна риса, \" — лапки.📌 Raw-рядки
R"(текст)" з C++11 — всі символи трактуються буквально, без обробки Escape-послідовностей.Середовище розробки та перший проєкт
Знайомство з Microsoft Visual Studio, різниця між компіляцією та інтерпретацією, створення першого консольного проєкту на C++ та анатомія програми «Hello, World!».
Типи даних, змінні та константи
Фундаментальні концепції зберігання інформації в C++: числові, символьні та логічні типи даних, оголошення змінних і констант, правила іменування, оператор присвоєння та літерали.