<<
>>

Потоковая библиотека ввода-вывода

В библиотеке определено целое семейство классов, которые обеспечивают ввод и вывод данных на стандартные устройства и в файлы. Дополнительные классы организуют форматирование текста в оперативной памяти, поддерживая «файловое» представление строк.
Каждый из этих классов ввода-вывода задает, как осуществляется обмен значениями встроенных типов данных. Кроме того, средства библиотеки используются для ввода-вывода данных в объекты пользовательских классов. Базовыми библиотечными средствами ввода-вывода являются:

? Класс istream (input stream — поток ввода) обеспечивает операции ввода.

? Класс ostream (output stream — поток вывода) обеспечивает операции вывода.

562

Глава 18. Ввод-вывод и файлы

? Объект с^ класса istream читает данные со стандартного устройства ввода.

? Объект сои! класса ostream записывает данные на стандартное устройство вывода.

? Объект сегг класса ostream записывает данные на стандартное устройство сообщений об ошибке. Объект сегг, как правило, используется для сообщений об ошибках в программе.

? Операция извлечения > > используется для чтения данных, передаваемых в объект класса istгeam. Она извлекает данные из потокового объекта, стоящего слева, и присваивает эти данные переменной, стоящей справа.

? Операция вставки < < используется для записи данных, передаваемых в объект класса ostгeam. Она копирует содержимое переменной, стоящей справа, в объект, содержащийся слева.

Концептуально ни вид устройства, ни специфика набора символов не влияет на выполнение операций ввода-вывода.

В частности, операцию > > можно использовать для чтения данных независимо от того, осуществляется ли чтение с консоли, из файла на диске или из строки в оперативной памяти. Кроме того, применение операции не зависит от типа читаемых символов.

Классы ввода-вывода определены в трех отдельных заголовочных файлах библиотеки: в iostream.li определены классы для чтения и записи данных на стандартные устройства, в fstream.li определены классы для чтения и записи данных в именованный файл, а в sstream.li определены классы для чтения и записи данных в строку, расположенную в оперативной памяти. Каждый из классов, перечисленных в заголовочных файлах fstream и sstream, является наследником соответствующего класса, указанного в заголовочном файле iostream. Список классов ввода-вывода содержится в табл. 18.5.

Таблица 18.5. Заголовки и классы библиотеки ввода-вывода

Объектно-ориентированный ввод-вывод в языке C++

563

Отношения наследования между потоковыми классами позволяют сделать следующие выводы. Каждая программа, в которой объекты класса istream применялись для чтения со стандартного устройства, может быть переписана для чтения данных из файла (при помощи класса ifstream) или строки (при помощи класса istringstream). Аналогично, в программах для вывода данных можно использовать классы ofstream или ostringstream вместо класса ОБ'Ьгеат. Класс ^Б'Ьгеат является наследником классов istream и ОБ'Ьгеат. Это значит, что объект класса ^Б'Ъгеат владеет операциями обоих родительских классов. Иначе говоря, объект класса ^Б'Ъгеат можно использовать как для ввода, так и для вывода данных в тот же поток. В библиотеке определены также еще два наследника от класса ^Б'Ъгеат — классы fБtream и БtringБtream. Эти классы предназначены для чтения и записи данных в файл или строку.

Как известно, функция, обрабатывающая указатели на объекты базового класса, может работать с объектами производного класса. Отсюда следует, что функция с параметром типа iБtream& может быть вызвана для объектов класса ifБtream или iБtringБtream. Аналогично, функция с параметром типа ОБ'Ъгеат& может быть вызвана для объектов класса ofБtream или ОБ'Ъ|^п§Б'Ьгеат. Так как классы ввода-вывода связаны наследованием, можно написать одну функцию и применять ее ко всем трем видам потоков: стандартному, файловому или строковому потоку.

<< | >>

Еще по теме Потоковая библиотека ввода-вывода:

  1. 14.6. Организация взаимодействия библиотек
  2. 14.8. Авторское право в деятельности библиотек
  3. Телос, живая библиотека Приветствую вас, друзья.
  4. Издания Ф. В. Булгарина и Н. И. Греча и журнал «Библиотека для чтения»
  5. Статья 305. Право на ознакомление с личными бумагами, переданными в фонд библиотек или архивов
  6. § 37 История вотчинной записки в России. – Явка актов в приказах. – Справка. – Юридическое и финансовое ее значение. – Аналогия нашей формы с западными. – Изменение старой формы при Петре I. – Новый крепостной порядок и новое значение справки и отказа. – Форма нового отказа и ввода во владение
  7. Выводы
  8. Выводы
  9. Выводы
  10. Выводы
  11. 7. Выводы, основанные на эмоциях
  12. 2.4.3. Выводы
  13. Выводы
  14. Выводы