Hola!
Estoy creando un proyecto en C++ bastante importante y la verdad que tengo un problema... Antes de todo aclarar que está siendo estrictamente desarrollado para solo sistemas Linux.
Lo que necesito es que creé un fichero .conf que la aplicación lo lea y pueda atribuir la configuración del fichero. El .conf se encuentra en /etc/ mientras que la aplicación en si se encuentra en /usr/bin. La lectura y escritura del fichero se realiza a través de ifstream y ofstream lo que produce que tenga que poner en el código ../../ para desplazarme carpetas atrás.
Pero claro, el problema está que esto se hace a través del directorio donde se encuentra el usuario en la consola es decir en su /home/user, pero no siempre es así, siempre que cambie de directorio el programa no va a poder leer el fichero .conf ya que no se encontrará a la ruta donde el objeto de ifstream fue declarado; ifstream fich("../../etc/fich.conf").
No sé si se entiende, pero les pondré un ejemplo;
Estoy en mi consola desde [~ usuario] es decir (/home/usuario). Yo ejecuto nombredelprograma en la consola y este lee /usr/bin y detecta que existe. El programa comienza a ejecutarse. Primero mira si ../../etc/fich.conf existe, en este caso sí, ya que estamos posicionados en la ruta perfecta.
Pero bien, ahora imaginemos que estamos en consola desde /home/usuario/Desktop, ahora al que el programa revise ../../etc/fich.conf verá que no existe y entonces producirá un error, ya que es como si estuviese mirando si existe en /home/etc/fich.conf y esto no existe en linux...
La verdad que estaría bien que el programa solo comenzar se situara por defecto en alguna ruta donde se fije así el programa lea perfectamente. He intentado de hacerlo con system("cd /home/usuario") al principio de la ejecución de código, debido a que solo será para sistemas Linux, pero nada, no va...
Sé que no se entiende muy bien, pero he intentado explicar-lo lo mejor posible, si hay dudas no duden en comentar y intentaré responder para aclarar mejor....
Saludos