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

2.2 Файловые потоки

Файловые потоки библиотеки ввода-вывода реализуют объектно-ориентированную методику работы с дисковыми файлами. Имеется три класса таких потоков:

  • ifstream специализирован для ввода из дисковых файлов.

  • ofstream специализирован для записи дисковых файлов.

  • fstream управляет как вводом, так и записью на диск.

Эти классы выводятся соответственно из istream, ostream и iostream. Таким образом, они наследуют все их функциональные возможности (перегруженные операции ”<<” и ”>>” для встроенных типов, флаги форматирования и состояния, манипуляторы и т.д.).

Чтобы работать с файловым потоком, нужен, во-первых, объект потока, а во-вторых, открытый файл, связанный с этим объектом.

Каждый из трех классов файловых потоков имеет четыре конструктора.

  • Конструктор, создающий объект без открытия файла:

    • ifstream();

    • ofstream();

    • fstream();

  • Конструктор, создающий объект, открывающий указанный файл и закрепляющий этот файл за потоком. Аргументами являются имя файла, режим открытия и режим защиты (в Windows не используется);

    • ifstream(const char *name, int mode=ios::in, long prot=0666);

    • ofstream(const char *name, int mode=ios::out, long prot=0666);

    • fstream(const char *name, int mode, long prot = 0666);

  • Конструктор, создающий объект и связывающий с ним уже открытый файл. В качестве аргумента передается дескриптор файла:

    • ifstream(int file);

    • ofstream(int file);

    • fstream(int file);

  • Конструктор, создающий объект и связывающий с ним уже открытый файл; объект ассоциируется указанным буфером:

    • ifstream(int file, char *buf, int len);

    • ofstream(int file, char *buf, int len);

    • fstream(int file, char *buf, int len);

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

2.2.1 Режимы открытия файла

Параметр mode, который имеет вторая форма конструктора, задает режим открытия файла. Для значений параметра класс ios определяет символические константы, перечисленные в таблице 11.3.

Таблица 10.3. Константы класса ios для режимов открытия файла

Константа

Описание

арр

Открытие для записи в конец файла.

ate

При открытии позиционирует указатель на конец файла.

binary

Файл открывается в двоичном (не текстовом) режиме.

in

Файл открывается для ввода.

out

Файл открывается для вывода.

trunc

Если файл существует, его содержимое теряется.

Константы можно комбинировать с помощью поразрядного OR. Для конструкторов классов ifstream и ofstream параметр mode имеет значения по умолчанию – соответственно ios::in и ios::out.

2.2.2 Закрытие файла

В классах файловых потоков имеется функция close(), которая сбрасывает содержимое потока и закрывает ассоциированный с ним файл.

Кроме того, деструктор потока автоматически закрывает файл при уничтожении объекта потока.

При ошибке закрытия файла устанавливается флаг failbit.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]