Para abrir el archivo estás haciendo:
Como puedes apreciar,
ofstream::open necesita un argumento, que es el nombre del fichero a abrir. El argumento en concreto debe ser de tipo
char*. Eso lo puedes ver echando un vistazo a la
documentación de la clase:
Código C++:
Ver originalvoid open (const char* filename, ios_base::openmode mode = ios_base::out);
Ese argumento se lo puedes pasar de forma fija (como en tu código), o usando una variable. Pues bien, tu lo que necesitas es hacer uso de la segunda opción.
¿Y cómo se pasa el nombre del fichero con una variable? La receta te la pongo a continuación:
Ingredientes:
- Una variable de tipo char* de tamaño suficiente
- strcpy para copias simples, strcat para concatenar cadenas, sprintf si el fichero puede tener números, ...
Preparación:
- Almacena en la variable el nombre del fichero a abrir
- Llama a ofstream::open pasando como argumento la variable que contiene el nombre del fichero
Dicho con un ejemplo:
Ver respuesta de
vangodp
Nota: la respuesta de vangodp usa
std::string en vez de
char* para almacenar el nombre del fichero. Sin embargo,
ofstream::open no espera recibir un
std::string, sino un
char*. Afortunadamente
std::string dispone de un método llamado
c_str() que te da acceso al
char* que gestiona internamente.
La principal ventaja de usar
std::string es que esta clase se encarga de garantizar que haya espacio suficiente para almacenar el nombre del fichero, lo que te permite despreocuparte de los problemas relacionados con la gestión de la memoria.
Un saludo