ВУЗ:
Составители:
Рубрика:
177
Обратим внимание, что по умолчанию режим открытия файла со-
ответствует типу файлового потока. У потока ввода или вывода флаг
режима всегда установлен неявно. Например, для потока вывода в ре-
жиме добавления файла можно вместо оператора
ofstream ofs(”FName.txt”, ios::out | ios::app);
написать
ofstream ofs(”FName.txt”, ios::app);
Между режимами открытия файла ios::ate и ios::app имеется не-
большая разница.
Если файл открывается в режиме добавления, весь вывод в файл
будет осуществляться в позицию, начинающуюся с текущего конца
файла, безотносительно к операциям позиционирования в файле. В ре-
жиме открытия ios::ate (от английского ”at end”) можно изменить по-
зицию вывода в файл и осуществлять запись, начиная с нее. Для пото-
ков вывода режим открытия эквивалентен ios::out | ios::trunc, то есть
можно опустить режим усечения файла. Однако для потоков ввода-
вывода его нужно указывать явно. Файлы, которые открываются для
вывода, создаются, если они еще не существуют.
Если открытие файла завершилось неудачей, объект, соответст-
вующий потоку, будет возвращать 0:
if (!ofs){ cout << ”Файл не открыт\n”;}
Проверить успешность открытия файла можно также с помощью
функции-члена is_open(), имеющей следующий прототип:
int is_open() const;
Функция возвращает 1, если поток удалось связать с открытым
файлом. Например,
if (!ofs.is_open()){ cout << ”Файл не открыт\n”; return; }
Если при открытии файла не указан режим ios::binary, файл от-
крывается в текстовом режиме и после того, как файл успешно открыт,
для выполнения операций ввода-вывода можно использовать операторы
извлечения и вставки в поток. Для проверки, достигнут ли конец файла,
можно использовать функцию ios::eof(), имеющую прототип int eof();
Страницы
- « первая
- ‹ предыдущая
- …
- 173
- 174
- 175
- 176
- 177
- …
- следующая ›
- последняя »