Для выполнения IO файла в С++ мы используем классыstream, ifstream и fstream.
- ofstream: класс Stream для записи в файлах
- ifstream: класс Stream для чтения из файлов
- fstream: класс Stream для чтения и записи из/в файлы
Процесс связывания файла с объектом потока называется "открытием файла".
При открытии файла мы можем указать режим, в котором файл должен быть открыт.
Мой запрос связан с режимами ios::out
и ios:in
.
Когда я создаю объект ofstream
и открываю файл в режиме ios::in
, я могу
пишите в файл, но только если его уже создано (с файлом режима ios::out
также создается, если он еще не существует).
Но когда я создаю объект ifstream
и открываю файл в режиме ios::out
, я могу читать из файла.
Мой вопрос в том, почему эти режимы (ios::in
/ios::out
) предоставляются языком, когда сам тип потока (ifstream
/ofstream
) указывает, какой тип операции (ввод/вывод) ) выполняется?
Также почему это неоднозначное использование (ofstream
с ios::in
и ifstream
с ios::out
) работает в одном случае и не удается (хотя только если файл еще не присутствует) в другом?