Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Не підтверджено.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.08 Mб
Скачать
  1. Класи потоків

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

С++-система введення-виведення побудована на двох взаємопов'язаних, але різних ієрархіях шаблонних класів. Перша ієрархія виведена з класу низькорівне- вого введення-виведення Ьазіс_з(геатЬи1 Цей клас підтримує базові низькорівневі операції введення та виведення і забезпечує підтримку всієї С++-системи введен- ня-виведення. Якщо Ви не плануєте займатися програмуванням спеціалізованих операцій введення-виведення даних, то Вам навряд чи доведеться використовува­ти безпосередньо клас Ьазіс_зІгеатЬи1 Друга ієрархія класів, з якою С++-програ- містам доводиться працювати безпосередньо, виведена з класу Ьазіс_іоз. Це - клас високорівневого введення-виведення, який забезпечує форматування даних, кон­троль помилок і надає статусну інформацію, пов'язану з потоками введення-ви- ведення1. Клас Ьазіс_іоє використовується як базовий для декількох похідних від нього класів, у т.ч. класів Ьазісізігеат. Ьазіс озігеат і Ьазіс іозігеат Ці класи вико­ристовуються для створення потоків, призначених для окремого введення та виве­дення даних і їх одночасного введення-виведення.

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

Табл. 9.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


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

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

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