320______________________________Часть II. Программирование на C++

IF EXIST TOSCD001 LH С:\DOC\MSCDEX /L:D /D:TOSCD001 /M:10

rem - By Windows Setup - С:\MOUSE\MOUSE

SET PATH=%PATH%;C:\Borland\Delphi32\Interbas\Bin

Путем небольших усовершенствований из программы Infile элементарно делается программа создания резервных копий текстовых файлов (листинг 13.6):

h03201.jpg

1 // BACKUP.CPP — Простейшая утилита копирования текстовых файлов.

2 #include <iostream.h>

3 #include <fstreain.h>

4 void main()

5 (

6 if stream in ( "С: \ AUTOEXEC.BAT") ;

7 of stream out( "C:\\AUTOEXEC.BAK");

8 char textline[256];

9 while(!in.eof())

10: {

11: in.getline( textline, 256); // in — объект ifstream

12: out « textline « endl; // out — объект ofstream

13: }

14: }

Самое существенное различие в том, что эта программа открывает файл для вывода (строка 7) и посылает все введенное вместо консоли в этот файл.

Некоторые особенности файловых потоков

В этом разделе мы рассмотрим те свойства и функции объектов cin и cout — как вы должны помнить, это экземпляры классов istream и ostream соответ-ственно — которыми обладают также и файловые потоки. Дело в том, что эти классы имеют общий корень, или, выражаясь в терминах объектно-ориентированного программирования, эти классы являются потомками базовых классов одной иерархии.

Хотя это не означает буквально, что какие-то свойства одного класса просто взяли и перенесли в другой, но упрощенно это можно понимать и так. Разумеется, есть отличия; например, то, что имеет смысл для файлов, далеко не обязательно имеет смысл для консоли.

Вы видели (в предыдущем разделе), что функции operator«, operator» и getline могут оперировать с потоками ввода-вывода как для файлов, так и для консоли. Имеется еще множество других функций-членов, доставшихся от общего предка в иерархии потоков. Полный перечень этих методов можно извлечь из заголовков iostream.h, fstream.h, ios.h и из контекстной справочной системы Borland C++.