open()

#include <fstream.h>
void open(const char *filename, int mode,
	int access=filebuf::openprot);

Описание

Связывает файл с потоком

Функция является членом классов fstream, ifstream и ofstream.

С помощью функции open() файл связывается с потоком. Параметр filename содержит имя файла и может включать спецификатор пути. Значение параметра mode определяет, в каком режиме открывается файл. Ниже перечислены возможные значения этого параметра.

Флаг открытия    Определение
ios::арр Добавление всех выводимых данных в конец заданного файла
ios::ate Ввода-вывод может выполняться в любом месте файла. Указатель устанавливаеться в конец файла
ios::binary Открытие файла для двоичных операций ввода-вывода
ios::in Открытие файла для вывода
ios::nocreate Неудача если заданного файла еще не существует
ios::noreplace Запрет выполнения если заданный файл уже существует
ios::out Открытие файла для ввода
ios::trunc Разрушение содержимого уже существующего файла

Используя оператор ИЛИ(OR), можно объединять в одном выражении два или больше значений(из перечисленных выше).

Включив значение ios::арр, можно обеспечить добавление всех выводимых данных в конец заданного файла. Это значение можно использовать только с файлами, которые позволяют выполнять операции вывода. Включение значения ios::ate оставляет внутренний указатель в конце файла при его открытии, но несмотря на это операции ввода-вывода могут выполняться в любом месте файла.

Значение ios::binary обеспечивает возможность открывать файл для выполнения двоичных операций ввода-вывода. По умолчанию файлы открываются в текстовом режиме.

Значение ios::in указывает на способность файла к выполнению операций ввода, а значение ios::out — операций вывода. Однако создание потока ifstream само по себе предполагает ввод, создание потока ofstream — вывод, а открытие файла с использованием потока fstream — как ввод, так и вывод.

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

Включение значения ios::nocreate обрекает функцию open() на неудачу, если заданного файла еще не существует. Значение ios::norepiace запрещает выполнение функции open(), если заданный файл уже существует, а значения ios::ate и ios::арр при этом не заданы.

Значение параметра access определяет режим доступа к файлу. По умолчанию действует значение filebuf::openprot (filebuf — это базовый класс для классов работы с файлами), означающее обычный файл. За информацией о других возможных значениях параметра access обратитесь к документации на используемый вами компилятор.

Открывая файл, для параметров mode и access можно использовать значения, действующие по умолчанию. Открывая файл ввода, параметр mode можно по умолчанию установить равным значению ios::in. Открывая файл вывода, параметр mode по умолчанию можно установить равным значению ios::out. В любом случае для параметра access по умолчанию используется вариант обычного файла(normal file). Например, при выполнении следующего фрагмента программы открывается файл с именем TEST для операций вывода.

Копировать
out.open("test");	//по умолчанию работа с обычным
			//файлом для вывода

Чтобы открыть поток для ввода и вывода, необходимо задать для параметра mode значения ios::in и ios::out, как показано ниже.

Копировать
mystream.open("test", ios::in | ios:out);

Во многих компиляторах при открытии файлов для операций чтения/записи никаких значений, действующих по умолчанию, не предусмотрено,

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