Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
55
Добавлен:
22.05.2015
Размер:
771.86 Кб
Скачать

Файловый

ввод/вывод

Файл - конечное количество последовательных байт, являющееся главной структурной единицей операционных систем

С помощью файлов программы взаимодействуют

с «внешним миром»:

обмен данными с пользователем, устройствами,

чтение из файлов и запись в файлы

Потоковый ввод-вывод:

обеспечивает последовательную передачу байт

поток — набор внутренних структур данных, обеспечивающих последовательный интерфейс обмена между внешним источником (приемником) и программой

Использование файлов в программе предполагает следующие операции:

создание потока;

открытие потока и связывание его с файлом;

обмен (ввод-вывод);

закрытие файла.

Стандартная библиотека языка программирования С++ содержит три класса для работы с файлами:

ifstream – класс входных файловых потоков;

ofstream - класс выходных файловых потоков;

fstream - класс двунаправленных файловых потоков.

Для того, чтобы в C++ работать с файлами, необходимо подключить заголовочный файл fstream:

#include <fstream>

Создание потока:

ofstream file_object("FILENAME.EXT");

Если вы указываете имя файла при объявлении объекта типа ofstream, C++ создаст новый файл на вашем диске, используя

указанное имя, или перезапишет файл с таким же именем, если он уже существует на вашем диске.

После этого можно объявлять объекты, привязанные к файлам: для чтения данных из файла используются объекты типа ifstream (аббревиатура от input file stream, для записи данных в файл используются объекты типа ofstream (output file stream). Например

ifstream in; // Поток in будем использовать для чтения

ofstream out; // Поток out будем использовать для записи

Чтобы привязать тот или иной поток к файлу (открыть файл для чтения или для записи) используется метод open, которому необходимо передать параметр – текстовую строку, содержащую имя открываемого файла.

in.open("input.txt");

out.open("output.txt");

После открытия файлов и привязки их к файловым потокам, работать с файлами можно так же, как со стандартными потоками ввода-вывода cin и cout. Например, чтобы вывести значение переменной x в поток out используются следующая операция

out<<x;

А чтобы считать значение переменной из потока in

in>>x;

Для закрытия ранее открытого файла используется метод close() без аргументов:

in.close();

out.close();

Oбъекты типа ifstream могут

использовать getline для

чтения строки файлового ввода, тем самым можно считывать файл построчно.

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

while (! input_file.eof())

{

// Операторы

}

Если в процессе файловой операции ошибок не было, функция fail возвратит ложь

(0). Однако, если встретилась ошибка, функция возвратит истину. Например, если программа открывает файл, ей следует использовать функцию fail, чтобы определить, произошла ли ошибка, как это показано ниже:

ifstream input_file("FILENAME.DAT"); if (input_file.fail())

{

cerr << "Ошибка открытия FILENAME.EXT" << endl;

exit(1);

}