Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/09/2015, 03:34
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Como creo un arhivo a partir de una variabe

Para abrir el archivo estás haciendo:

Código C++:
Ver original
  1. archivo.open("Empresa");

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 original
  1. void 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