Мне интересно, если вы не используете неправильный класс. Если вы хотите записать в файл, используйте std::ofstream
, а не std::fstream
. В частности, конструктор std::ofstream
вызывает бит ios_base::out
при вызове rdbuf()->open
; конструктор std::fstream
этого не делает (поэтому вы открываете файл без прав на чтение и запись).
И вы, вероятно, хотите проверить состояние ошибки: открылось ли успешно, а после закрытия (или сброса) все записи были успешными. Обычный способ сделать это просто:
if ( fout ) {
// All OK...
}
if ( !fout ) {
// Something went wrong.
}
После открытия (конструктор) вы можете использовать fout.is_open()
, преимущество которого в том, что вы немного более явны в отношении того, что вы проверяете.