C++ для начинающих Как открыть файл в нужном режиме

Сайт не является учебником по программированию. Это только небольшой авторский сборник информации в помощь начинающим программистам.

  В этой статье я договорю то что еще не рассказывал. Прошло много времени с того момента как я написал статью про работу с текстовым файлом, но будучи совсем зеленым я не мог сразу всё собрать и выдать людям. Я не думал, что работа с текстовым файлом станет очень популярной на страницах моего блога. Оказывается работа с файлами вызывает очень много вопросов
Здесь я опишу ответ на простой вопрос. «Как открыть файл в режиме…..».

  В C++ файлы можно открывать в таких режимах как Для чтения, для записи и для добавления информации в конец файла.

Константы режима файлов

  • ios::in Открыть файл для чтения
  • ios::out Открыть файл для записи
  • ios::ate Перейти к концу файла после открытия
  • ios::app Добавлять к концу файла
  • ios::trunc Усечь файл если он существует
  • ios::binary Бинарный файл

Использовать эти константы достаточно просто. Например предполагается, что в конец файла нужно добавить информацию. Смотрим на константы и находим подходящую.

Думаю этого примера достаточно, чтобы определиться с вашей ситуацией и определить нужную вам константу.

  Но это еще не всё. C++ поддерживает комбинированные режимы, в которых можно открывать файлы в режиме для и для. Например, если файл не существует, то при попытке к такому файлу обратиться произойдет ошибка. Из не существующего файла прочитать по определению ничего нельзя. При открытии файла можно проверять на эту ошибку и если файла нет, то записывать новый пустой или выдавать сообщение, но можно скомбинировать режимы открытия: Открыть для добавления в конец файла и записи в файл сразу.

Теперь можно запустить программу, после выполнения переписать BUGAGA и запустить программу снова. Даже если файл не существовал, файл создастся, а если он есть, то в его конец будет дописываться информация.

  Я думаю не имеет большого смысла описывать все возможные комбинации и пути. Вам ваши эксперименты помогут немного попрактиковаться и получить навыки для работы с файлами в разных режимах

  • ios::in Открыть для чтения
  • ios::out Открыть для записи
  • ios::out | ios::trunc Открыть для записи с усечением существующего файла
  • ios::out | ios::app Открыть для записи с добавлением
  • ios::in | ios::out Открыть для чтения и записи с разрешением записи с произвольного места файла
  • ios::in | ios::out | ios::trunc Открыть для чтения и записи с усечением существующего файла
  • ios::binary Открыть в двоичном режиме

========================
  Во время ваших попыток что-то сделать с файлом, вы скорее всего будете предполагать какой из режимов вам подходит больше

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

2 комментария: C++ для начинающих Как открыть файл в нужном режиме

  • Sergio говорит:

    ios::in | ios::in Открыть для чтения и записи с разрешением записи с произвольного места файла
    Если в этой строке нет ошибки, то поясните её, пожалуйста. Как новичок понимаю её: два раза открыть для чтения.

    Автор сайта отвечает:
    похоже, что это у меня опечатка. я обязательно позже посмотрю.
    сейчас, пока что, я на других вещах сосредоточен просто
    (не с++).

    скорее всего имелось ввиду ios::in | ios::out

    исправил. это была моя ошибка.

    Есть ещё несколько полезных режимов открытия файлов, пригодится:
    ios::nocreate задает такой режим, при котором функция open() может открыть только существующий файл.
    ios::noreplace не позволяет открыть файл функции ореn(), если файл уже существует, но не указаны атрибуты ios::ate или ios::app.

  • Знаток С++ говорит:

    Ваш сайт просто ценный для нас,ОЧЕНЬ ПОМОГ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11111111111111

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     
Яндекс.Метрика

НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Приходит программер в магазин. Подходит к витрине, хочет достать еды, но не может и говорит: - Rеаd оnlу, однако...

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок