При открытии файла с установленным по умолчанию флагом write , т. Е. std::ios::out
с помощью средства <iostream>
или "w"
с использованием функций <cstdio>
, за ними возникает комбинация флагов POSIXспина - добавлен флаг усечение .Это означает, что при открытии в режиме записи содержимое файла отбрасывается.Чтобы обойти это, откройте файл во второй раз с помощью
fs.open("myFile", std::ios::binary | std::ios::app);
. Режим append перемещает курсор файла в конец файла при каждой операции записи и не объединяется с усекать флаг, см. здесь .Обратите внимание, что если вы хотите записать произвольные позиции в существующем файле, вам нужно открыть его с помощью
fs.open("myFile", std::ios::binary | std::ios::in | std::ios::out);
, который не усекает его содержимое и позволяет позиционировать курсор с помощью функций seek*
.