Использование ios::binary
не заставляет его записывать двоичные данные в файл, оно просто отключает некоторое форматирование, см. Какой смысл использовать std :: ios_base :: binary? , например.
Если вы хотите записать целое число в файл в двоичном виде, я предлагаю вам использовать что-то вроде этого:
int foo = 0x0F00;
ofstream bar("test.txt", ios::out | ios::binary);
bar.write(reinterpret_cast<char*>(&foo), sizeof(int));
bar.close();
Это будет принимать целое число, переинтерпретировать его как последовательность символов и выводитьэто в файл без форматирования (для этого требуется ios::binary
).
Видя, что вы с тех пор отредактировали вопрос: вы не можете суммировать подобное на диске, вы можете записывать только в байтах, это перезапишет любые данные, которые были там раньше.Чтобы сделать то, что вы хотите, вы должны прочитать число, подвести его и записать обратно.Вы делаете это, используя foo.read(...)
с foo
, который теперь равен fstream
и также открывается с помощью ios::in
.