SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: 5erg10 en Miércoles 5 de Mayo de 2004, 19:46

Título: Rutas De Ficheros
Publicado por: 5erg10 en Miércoles 5 de Mayo de 2004, 19:46
Enas a todos.

Tengo un problema con las funciones ifstream y ofstream de C++. La cuestión es la siguiente: mi aplicación usa una serie de archivos "de apoyo" que yo quiero que estén siempre en la misma ruta que el fichero ejecutable, y por eso utilizo para abrirlo las lineas:

ifstream fin("mi_archivo");

o

ofstream fon("mi_archivo");

Según lo quiera para leer o escribir. Hasta ahí funciona bien la cosa. El problema llega cuando mi aplicación busca otros ficheros de datos distintos que se encuentren en otro directorio, supongamos que sea "C:\Mis Documentos". Entonces la siguiente vez que se ejecuten las ordenes para abrir mis archivos de apoyo, en lugar de buscarlos en el directorio en el que se encuentra el ejecutable, los busca en el directorio nuevo (en este caso sería "C:\Mis Documentos"). No sé si me he explicado bien xD

Bueno, pues la pregunta es cómo me lo puedo montar yo para que "mi_archivo" siempre lo busque en la ruta del fichero ejecutable (suponiendo que éste pueda estar en cualquier carpeta)

Gracias por adelantado.
Título: Re: Rutas De Ficheros
Publicado por: Ruben3d en Miércoles 5 de Mayo de 2004, 20:21
Hola.

Para evitar ese problema puedes concatenar la ruta relativa de tus ficheros de datos con la ruta absoluta a tu fichero ejecutable. Para saber dónde está tu ejecutable puedes hacer esto:

Código: Text
  1.  
  2. char fileName[MAX_PATH+1];
  3. GetModuleFileName(NULL, fileName, MAX_PATH);
  4.  
  5.  

Esto te guardará en fileName la ruta al exe (incluido el nombre del fichero). Eliminale el nombre del fichero y concatenalo con tus rutas relativas.

Con esto deberías solucionar tu problema.

Un saludo.

Ruben3d
Título: Re: Rutas De Ficheros
Publicado por: 5erg10 en Miércoles 5 de Mayo de 2004, 23:12
Gracias tio, funciona perfectamente.

Un saludo :hola: