Главная->Інформатика та програмування->Содержание->Потоковый ввод/вывод дисковых файлов

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 12) онлайн

Потоковый ввод/вывод дисковых файлов

Большинству программ требуется сохранять данные на диске и считывать их.

Работа с дисковыми файлами подразумевает наличие еще одного набора специ-

 альных классов: ifstream для ввода и ofstream для вывода. Класс fstream осуществ-

ляет и ввод, и вывод. Объекты этих классов могут быть ассоциированы с диско-

выми файлами, а их методы — использоваться для обмена данными с ними.

Вернемся к рис. 12.1. На нем видно, что класс ifstream является наследником

класса istream, ofstream — класса ostream, fstream — класса iostream. Эти родитель-

ские классы, в свою очередь, являются наследниками класса ios. Такая иерархия

вполне логична — классы, ориентированные на работу с файлами, могут ис-

пользовать методы более общих классов. К тому же файловые классы использу-

ют принцип множественного наследования, будучи наследниками еще и класса

fstreambase. Этот класс содержит объект класса filebuf, являющегося файловым

буфером, а также ассоциированные методы, унаследованные от более общего

класса streambuf. Обычно программисту не приходится заботиться об этих бу-

ферных классах.

Классы ifstream, ofstream и fstream объявлены в файле FSTREAM.

Программисты на C наверняка обратят внимание на то, что подход к диско-

вому вводу/выводу в C++ оказывается совсем иным. Старые функции языка С,

такие, как fread() и fwrite() в C++, конечно, работают, но они не так хорошо впи-

сываются в концепцию объектно-ориентированной среды программирования.

Новый подход, предлагаемый C++, гораздо прозрачнее и проще в использова-

нии. Кстати говоря, остерегайтесь случайного перемешивания старых функций

С с потоками C++. Они не всегда в хороших отношениях друг с другом, хотя

есть возможность заставить их жить дружно.

 

18