Ваш фрагмент кода неверен, так как он пытается записать в файл, который вы открыли для ввода. Если вы хотите записать в файл, просто используйте ios::out
вместо ios::in
.
Если вы хотите открыть файл для чтения, но создать его, если он не существует, вы можете использовать:
file.open("test.bin", ios::in | ios::binary);
if(!file.is_open()) {
file.open("test.bin", ios::out | ios::binary);
int n = 3;
file.write(reinterpret_cast<char*>(&n), sizeof(n));
file.close();
file.open("test.bin", ios::in | ios::binary);
if(!file.is_open()) {
return -1;
}
}
Это инициализирует файл с целым числом 3 в качестве содержимого по умолчанию, если он еще не существует.
Если он существует, он оставит содержимое в покое. В любом случае файл будет открыт с первого байта.