std :: fstream no crea archivo

Estoy intentando usar std :: fstream para io para archivar, y quiero crear el archivo si no existe.

std::fstream my_stream my_stream.open("my_file_name",std::fstream::binary | std::fstream::in | std::fstream::out); if(!my_stream) std::cout<<"error"<<strerror(errorno); 

Obtengo este resultado: “No hay tal archivo o directorio”.

¿Cómo puedo crear el archivo en este caso?

Está especificando std::fstream::in en su llamada a fstream :: open () . Esto se conoce para obligarlo a requerir un archivo existente.

std::fstream::in de su argumento de mode o especifique std::fstream::trunc además de los otros indicadores.

Está un poco desordenado pero funciona. No sobrescribe el archivo si existe, pero crea uno nuevo si falla el primero.

 std::fstream my_stream my_stream.open("my_file_name",std::fstream::binary | std::fstream::in | std::fstream::out); if(!my_stream) { my_stream.open("my_file_name",std::fstream::binary | std::fstream::trunc | std::fstream::out); my_stream.close(); // re-open with original flags my_stream.open("my_file_name",std::fstream::binary | std::fstream::in | std::fstream::out); } else { // read something } // read/write here