Для выполнения 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) работает в одном случае и не удается (хотя только если файл еще не присутствует) в другом?