Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+ООП_Навч_посібник.doc
Скачиваний:
7
Добавлен:
01.07.2025
Размер:
6.58 Mб
Скачать

19.2.3. Класи потоків

Як було зазначено в розд. 2, С++-система введення-виведення використовує заголовок <iostream>, у якому для підтримки операцій введення-виведення даних визначена достатньо складна ієрархія класів. Ця ієрархія починається з системи шаблонних класів. Як наголошувалося в розд. 17, шаблонний клас визначає зміст виконуваних дій, не задаючи у повному обсязі типи даних, які він повинен обробляти. Маючи шаблонний клас, можна створювати його конкретні примірники. Для бібліотеки введення-виведення стандарт мови програмування C++ створює дві спеціалізації шаблонних класів: одну для 8-, а іншу для 16-бітових ("широких") символів. У цьому навчальному посібнику описуються шаблонні класи тільки для 8-бітових символів, оскільки вони найчастіше використовуються.

С++-система введення-виведення побудована на двох взаємопов'язаних, але різних ієрархіях шаблонних класів. Перша ієрархія виведена з класу низькорівневого введення-виведення basic_streambuf. Цей клас підтримує базові низькорівневі операції введення та виведення і забезпечує підтримку всієї С++-системи введення-виведення. Якщо Ви не плануєте займатися програмуванням спеціалізованих операцій введення-виведення даних, то Вам навряд чи доведеться використовувати безпосередньо клас basic_streambuf. Друга ієрархія класів, з якою С++-програмістам доводиться працювати безпосередньо, виведена з класу basic_ios. Це –| клас високорівневого введення-виведення, який забезпечує форматування даних, контроль помилок і надає статусну інформацію, пов'язану з потоками введення-виведення1. Клас basic_ios використовується як базовий для декількох похідних від нього класів, в т.ч. класи basic_istream, basic_ostream і basic_iostream. Ці класи використовуються для створення потоків, призначених для окремого введення та виведення даних і їх одночасного введення-виведення.

Як ми вже зазначали вище, бібліотека введення-виведення даних створює дві спеціалізовані ієрархії шаблонних класів: одну для 8-, а іншу для 16-бітових символів. У табл. 19.1 наведено список імен шаблонних класів і відповідних їм "символьних" версій.

Табл. 19.1. Список імен шаблонних класів і відповідних їм "символьних" версій

Шаблонні класи

Символьні класи

Базові низькорівневі операції введення-виведення

basic_streambuf

streambuf

Висорівневі операції введення-виведення

basic_ios

ios

basic_istream

istream

basic_ostream

ostream

basic_iostream

iostream

basic_fstream

fstream

basic_ifstream

ifstream

basic_ofstream

ofstream

У подальшій частині цього навчального посібника розглядатимуться імена символьних класів, оскільки саме вони найчастіше застосовуються у програмах. Такі ж самі імена використовуються і старою бібліотекою введення-виведення. Ось тому стара і нова бібліотеки сумісні між собою на рівні початкового коду програми.

Варто знати! Клас ios містить багато функцій-членів класу і змінних, які керують основними операціями над потоками або відстежують результати їх виконання. Тому ім'я класу ios вживатиметься у цьому навчальному посібнику достатньо часто.

Необхідно пам'ятати! Якщо помістити у програму заголовок <iostream>, то вона матиме доступ до цього важливого класу.