Шаг 461.
Библиотека STL. Ввод-вывод с использованием потоковых классов. Основные потоковые классы и объекты. Иерархия потоковых классов
На этом шаге мы приведеи иерархию потоковых классов и дадим им краткую характеристику.
Потоковые классы библиотеки IOStream образуют иерархию, изображенную на рисунке 1. Для шаблонных классов в верхней строке указано
имя шаблона, а в нижней - имена специализаций для типов char и wchar_t.
Рис.1. Иерархия основных потоковых классов
Ниже перечислены задачи, решаемые классами этой иерархии.
- Базовый класс ios_base определяет свойства всех потоковых классов, не зависящие от типа и трактовок символов. Класс в основном
состоит из компонентов и функций, предназначенных для управления состоянием и флагами формата.
- Шаблон класса basic_ios<>, производный от ios_base<>, определяет общие свойства всех потоковых классов,
зависящие от типа и трактовок символов. В число этих свойств входит определение буфера, используемого потоком данных. Буфер представлен
объектом класса, производным от базового класса basic_streambuf<>, с соответствующей специализацией. Фактически именно он
выполняет операции чтения/записи.
- Шаблоны basic_istream<> и basic_ostream<>, виртуально производные от basic_ ios<>, определяют
объекты, которые могут использоваться соответственно для чтения и записи. Эти классы, как и basic_ios<>, оформлены в виде шаблонов,
параметризованных по типу и трактовкам символов. Если проблемы интернационализации несущественны, задействуются специализации этих классов
для типа символов char (а именно istream и ostream).
- Шаблон basic_iostream<> является производным от двух шаблонов - basic_ istream<> и basic_ostream<>.
Он определяет объекты, которые могут использоваться как для чтения, так и для записи.
- Шаблон basic_streambuf<> занимает центральное место в библиотеке IOStream. Он определяет интерфейс всех
представлений, записываемых в потоки данных или читаемых из потоков данных, и используется другими потоковыми классами для фактического
чтения или записи символов. Для получения доступа к некоторым внешним представлениям классы объявляются производными от basic_streambuf<>.
Подробности приведены в следующих шагах.
На следующем шаге мы рассмотрим назначение потоковых буферных классов.
Предыдущий шаг
Содержание
Следующий шаг