Pregunta

Tengo un archivo que describe los datos de entrada, que se divide en varios otros archivos. En mi archivo descriptor, lo primero dar a la Una ruta que indica dónde se encuentran todos los otros archivos.

El originador puede establecer ya sea una relativa (a la ubicación del archivo descriptor) o ruta absoluta.

Cuando mi programa se llama, el usuario da el nombre del archivo descriptor. Puede que no sea en el directorio de trabajo actual, por lo que el nombre de fichero B dado también puede contener directorios.

Para mi programa para siempre encuentran los archivos de entrada en los lugares correctos, tengo que combinar esta información. Si la ruta dado es absoluta, necesito sólo que uno. Si es relativa, necesito concatenar a la ruta B (es decir, parte del directorio del nombre de archivo).

pensé boost::filesystem::complete puede hacer el trabajo para mí. Por desgracia, parece que no es. Yo también no entiendo cómo prueba wether una trayectoria dada es absoluta o no.

¿Alguna idea?

¿Fue útil?

Solución

En realidad, yo estaba bastante mal guiados principio, pero ahora se encuentra la solución a mí mismo. Cuando "base" contiene la ruta A, y nombre de archivo contiene B:

boost::filesystem::path basepath(base), filepath(filename);
if (!basepath.is_complete())
    basepath = filepath.remove_leaf() /= basepath;
base = basepath.string();

Funciona con Linux al menos (en la que sería muy fácil de hacer y sin impulso, pero bueno ..), todavía tiene que probar con Windows.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top