Язык С++ и программирование на нем. Рейзлин В.И. - 160 стр.

UptoLike

Составители: 

162
27. Потоковый ввод-вывод
Мы уже неоднократно пользовались различными потоками вво-
да/вывода. Здесь мы рассмотрим работу с потоками более подробно.
Ввод/вывод потоков в С++ используется для преобразования типизиро-
ванных объектов в читаемый текст и обратно.
Классы, связанные с потоками С++, содержат расширяемые биб-
лиотеки, позволяющие выполнять форматированный ввод/вывод с кон-
тролем типов как для предопределенных, так и для определяемых поль-
зователем типов данных с помощью перегруженных операций и прочих
объектно-ориентированных методов.
Потоком будем называть понятие, относящееся к любому пере-
носу данных от источника (или поставщика данных) к приемнику (или
потребителю) данных. Несмотря на свое имя, класс потока может быть
использован для форматирования данных в ситуациях, не подразуме-
вающих реального выполнения ввода/вывода. Так, форматирование в
памяти можно применять к символьным массивам и прочим структу-
рам.
В файле iostream.h имеется два параллельных класса: streambuf
и ios. Оба они являются классами низкого уровня, и каждый выполняет
свой круг задач.
Класс streambuf обеспечивает общие правила буферизации и об-
работки потоков в тех случаях, когда не требуется значительного фор-
матирования этих потоков. Класс streambuf представляет собой базо-
вый класс, используемый другими классами из iostream.h. Большинство
функций-членов streambuf являются встраиваемыми (inline) для обес-
печения максимальной эффективности. Классы strstreambuf и filebuf
являются производными от streambuf.
Класс ios (и, следовательно, производные от него классы) содер-
жит указатель на streambuf.
Класс ios имеет два производных класса: istream (для ввода) и
ostream (для вывода). Другой класс, iostream, является производным
классом сразу от istream и ostream вследствие множественного насле-
дования:
class ios;
class istream: virtual public ios;
class ostream: virtual public ios;
class iostream: public istream, public ostream;