Язык программирования C++. Вводный курс


Файловый ввод/вывод


Если программе необходимо работать с файлом, то следует включить в нее заголовочный файл fstream

(который в свою очередь включает iostream):

#include <fstream>

Если файл будет использоваться только для вывода, мы определяем объект класса ofstream. Например:

ofstream outfile( "copy.out", ios::base::out );

Передаваемые конструктору аргументы задают имя открываемого файла и режим открытия. Файл типа ofstream

может быть открыт либо – по умолчанию – в режиме вывода (ios_base::out), либо в режиме дозаписи (ios_base::app). Такое определение файла outfile2

эквивалентно приведенному выше:

// по умолчанию открывается в режиме вывода

ofstream outfile2( "copy.out" );

Если в режиме вывода открывается существующий файл, то все хранившиеся в нем данные пропадают. Если же мы хотим не заменить, а добавить данные, то следует открывать файл в режиме дозаписи: тогда новые данные помещаются в конец. Если указанный файл не существует, то он создается в любом режиме.

Прежде чем пытаться прочитать из файла или записать в него, нужно проверить, что файл был успешно открыт:

if ( ! outfile ) { // открыть файл не удалось

   cerr << "не могу открыть "copy.out" для записи\n";

   exit( -1 );

}

Класс ofstream

является производным от ostream. Все определенные в ostream

операции применимы и к ofstream. Например, инструкции

char ch = ' ';

outFile.put( '1' ).put( ')' ).put( ch );

outFile << "1 + 1 = " << (1 + 1) << endl;

выводят в файл outFile

последовательность символов:

1) 1 + 1 = 2

 

Следующая программа читает из стандартного ввода символы и копирует их в стандартный вывод:

#include <fstream>

 

int main()

{

    // открыть файл copy.out для вывода

    ofstream outFile( "copy.out" );

 

    if ( ! outFile ) {

        cerr << "Не могу открыть 'copy.out' для вывода\n";

        return -1;

    }

 

    char ch;

    while ( cin.get( ch ) )

               outFile.put( ch );

<


Начало  Назад  Вперед