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):
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++.