Работает нормально для меня, это не проблема, присущая вводу / выводу потокового файла c ++, как вы, кажется, думаете.
Возможно, попробуйте добавить ios::in
к флагам openmode. В соответствии с 27.8.1.6 стандарта требуется или с ios :: in, так что это, вероятно, ничего не даст.
Попробуйте проверить, какой бит установлен на самом деле - вместо вызова good () попробуйте проверить bad (), eof () и fail () по отдельности. Это может дать ключ к пониманию ошибки.