Введення - виведення потоку даних
При введенні - виведенні потоку всі дані розглядаються як потік окремих байтів. Функції введення - виведення для потоку дозволяють обробляти дані різних розмірів і форматів: від одиночного символу до великих структур даних. Програміст може використовувати функції чи бібліотеки, розробляти власні і включати їх у бібліотеку. Для доступу до бібліотеки цих класів треба включити в програму відповідні файли заголовків, наприклад:
#include <iostream.h>.
За замовчанням стандартні введення, виведення і виведення повідомлень щодо помилки відносяться до консолі користувача (клавіатура й екран). Це означає, що кожен раз, коли програма очікує введення зі стандартного потоку, дані мають надходити з клавіатури, а якщо програма виводить, то на екран.
Найчастіше в С++ використовується поточне введення даних, операції якого включені до складу класів istream чи iostream. Воно може здійснюватися з визначеним у цих класах вхідним потоком cin чи вхідним потоком, що визначений користувачем. Для читання символів з цього потоку вказується операція витягу з потоку, що позначається за допомогою символів " >> ". Це перевантажена операція, визначена для всіх простих типів і покажчика на char. Формат запису оператора cin має вид:
cin [ >> values ];
Наприклад, для введення значень змінним х і у можна написати:
cin >> x >> y;
Виведення даних може бути неформатованим і форматованим. Найчастіше для виведення застосовується визначена операція <<, що записується разом з ім'ям вихідного потоку cout. Таким чином, запис:
cout << x;
означає виведення значення змінної x (чи запис у потік). Цей оператор вибирає необхідну функцію перетворення даних у потік байтів. Формат запису cout відрізняється від форми запису команд С++ :
cout << data [ << data << "\n"];
де data − це змінні, константи чи вирази, "\n" - керуючий символ переведення каретки на нову строку.
Для додаткового керування вихідними даними використовуються маніпулятори: setw(n) і setprecision(k). Маніпулятор setw(n) служить для вказівки довжини поля, що приділяється для виведення наступних даних (тут n - кількість позицій у рядку), setprecision(k) призначений для вказівки кількості позицій у дробовій частині дійсних чисел. Функція setprecision(2) повідомляє С++ про те, що число з крапкою треба виводити з двома знаками після крапки з округленням дробової частини. Наприклад, при виконанні оператора
сout << setw(7) << setprecision (2) << 123.456789;
буде отриманий наступний результат:123.46. Для використання цих маніпуляторів треба підключати заголовний файл <iomanip.h>.
Приклад 6. Використання маніпуляторів під час виведення.
#include <iostream.h>
#include <iomanip.h>
void main ( )
{
cout << 456 << 789 << 123 << endl;
cout << setw(5) << 456 << setw(5) << 789 << setw(5) << 123 << endl;
cout << setw(7) << 456 << setw(7) << 789 << setw(2) << 123 << endl;
}
Результати виконання програми:
456789123
456 789 123
456 789 12
При використанні функції setw() С++ вирівнює число вправо в границях заданої ширини поля виведення. Якщо ширина недостатня, С++ ігнорує вказане значення.