Приведенный вами код выглядит правильно. Выводит оно не то, что вы хотите из-за другой ошибки. Например, файл пуст но вы руками проверяете другой файл.
Или файл не открывается, потому что его нет, или у вас компилируется через C++98.
В документации
написанно (примечание после параметров):
If the mode has both trunc and app set, the opening operation fails. It also fails if either is set but out is not, or if both app and in are set.
Вы же, судя по комментариям, открываете с app и in вместе.
Вам точно надо читать и писать из этого файла да еще и увеличивать его размер?