Estoy escribiendo una aplicación multiplataforma que necesita inspeccionar y manipular las rutas de Windows.Biblioteca multiplataforma para manipular rutas de Windows?
Específicamente, para el problema particular que estoy teniendo ahora, necesito saber si un camino es absoluto o relativo.
El código actual utiliza boost::filesystem::path
que por supuesto funciona como un encanto en Windows:
boost::filesystem::path the_path(the_path_as_a_string);
if (!the_path.has_root_path()) { /* do stuff */ }
El problema con este enfoque es que boost::filesystem::path
sólo tiene dos modos: nativas y portátiles. Esto significa que la gramática de ruta de Windows no está disponible cuando compilo en Linux (es #ifdef
editado en la fuente). Por lo tanto, la ruta "C: \ ruta" se considera absoluta en Windows, pero relativa en Linux.
¿Pueden ustedes recomendar una biblioteca de C++ multiplataforma que pueda inspeccionar y manipular las rutas de Windows?
Por ahora, la única operación de ruta de Windows que haré es comprobar si una ruta es absoluta o no.
El criterio que usaré para una ruta absoluta es que contiene una letra de unidad y la ruta comienza con \
. Un ejemplo de una ruta absoluta bajo este criterio es C:\path
. Estos son ejemplos de rutas relativas bajo este criterio: C:path
, \path
.
¿Sabía que la distinción no es esa en blanco y negro? Considere la ruta válida 'C: foo.txt'. Utiliza el directorio de trabajo actual _de C: drive_! – MSalters
MSalters: no había pensado en eso cuando hice la pregunta. También parece que el escritor original del código que trato de mantener no lo había pensado. Ahora tengo que averiguar qué comportamiento queremos realmente ... –