На этом шаге мы приведем краткую характеристику потоковых буфурных классов.
Библиотека IOStream проектировалась со строгим разделением обязанностей. Классы, производные от basic_ios, "всего лишь" ограничиваются форматированием данных. Операции чтения и записи символов выполняются потоковыми буферами, которые представлены объектами, подчиненными по отношению к классу basic_ios. Потоковые буферы обеспечивают выполнение чтения/записи в символьных буферах и помогают абстрагироваться от внешнего представления (например, файлов или строковых данных).
Потоковые буферы играют важную роль при выполнении ввода-вывода с новыми внешними представлениями (например, сокетами или компонентами графического интерфейса), перенаправлении потоков данных или их конвейерном объединении (например, при сжатии выходных данных перед их передачей в другой поток данных). Кроме того, потоковые буферы обеспечивают синхронизацию при одновременном вводе-выводе с одним внешним представлением.
Потоковые буферы упрощают определение новых "внешних представлений" (скажем, предназначенных для работы с новым носителем данных). Для этого требуется лишь объявить новый потоковый буферный класс, производный от basic_streambuf<> (или его подходящей специализации) и определить функции чтения и/или записи символов для нового внешнего представления. Все возможности форматированного ввода-вывода автоматически становятся доступными, когда объект потока данных инициализируется для использования объекта нового потокового буферного класса.
На следующем шаге мы приведем подробные определения классов.