Режимы работы с файлом при открытии
Режим | Описание |
ios::in | открыть файл в режиме чтения данных, этот режим является режимом по умолчанию для потоков ifstream |
ios::out | открыть файл в режиме записи данных, этот режим является режимом по умолчанию для потоков ofstream |
ios::app | открыть файл в режиме записи данных в конец файла |
ios::ate | передвинуться в конец уже открытого файла |
ios::trunc | очистить файл, это же происходит в режиме ios::out |
ios::nocreate | не выполнять операцию открытия файл, если он не существует |
ios::noreplace | не открывать существующий файл |
ios::binary | открыть двоичный файл |
Параметр mode может отсутствовать, в этом случае файл открывается в режиме по умолчанию для данного потока:
ios::in – для потоков ifstream,
ios::out – для потоков ofstream.
После удачного открытия файла (в любом режиме) в переменной F будет храниться 1 (true), в противном случае 0 (false). Это позволит проверять корректность операции открытия файла.
Если открытие файла завершилось неудачей, объект, соответствующий потоку, будет возвращать значение 0:
if (!ofs){
cout << "Файл не открыт\n";
}
Проверить успешность открытия файла можно также с помощью функции is_open(), имеющей следующий прототип:
int is_open() const;
Функция возвращает 1, если поток удалось связать с открытым файлом.
Например,
if (!ofs.is_open())
cout << "Файл не открыт\n";
Открыть файл в режиме записи можно одним из следующих способов:
Первый способ
ofstream F;
F.open("abc.txt", ios::out);
Второй способ, режим ios::out является режимом по умолчанию для потока ofstream
ofstream F;
F.open("abc.txt");
Третий способ объединяет описание переменной типа поток и открытие файла в одном операторе.
ofstream F("abc.txt", ios::out);
После открытия файла в режиме записи, будет создан пустой файл, в который можно будет записывать информацию. Если необходимо открыть существующий файл (при этом сохранить его содержимое), то в качестве режима следует использовать значение ios::app.
После открытия файла в режиме записи, в него можно писать точно так же, как и на экран, только вместо стандартного устройства вывода cout необходимо указать имя открытого для записи файла.
Например, для записи в поток F переменной a, оператор вывода будет иметь вид:
F << a;
Для последовательного вывода в поток G переменных b, c и d оператор вывода станет таким:
G << b << c << d;
Чтение из файла выполняется корректно до достижения конца файла. Для проверки, достигнут ли конец файла, можно использовать функцию
ios::eof(),
которая имеет прототип int eof();.
Данная функция возвращает 0, если конец файла не достигнут, и значение 1 при достижении конца файла.
Дата добавления: 2015-02-16; просмотров: 806;