txt rutas ruta relativos relativas relativa manejo directorios como buscar archivos archivo acceso absoluta c++ windows linux cross-platform gnu

c++ - relativos - Manejo de rutas de archivos multiplataforma



rutas en c++ (4)

A menos que esté utilizando rutas absolutas, no hay necesidad de traducir en absoluto: Windows convierte automáticamente las barras diagonales en barras diagonales inversas, por lo que si usa rutas relativas con separadores de ruta de barra diagonal, se verá dorado. Realmente deberías evitar caminos absolutos si es posible.

¿Existe alguna clase C ++ GNU independiente que maneje rutas cruzadas? Mis aplicaciones se basan en Windows y LInux. Nuestros archivos de configuración se refieren a otro archivo en un directorio separado. Me gustaría poder leer la ruta del otro archivo de configuración en una clase que funcionaría tanto en Linux como en Windows.

¿Qué clase ofrecería la huella más pequeña para traducir rutas para usar en cualquiera de los sistemas? Gracias




Hay muchas formas, en mi humilde opinión, la respuesta correcta es rediseñar su programa para evitar la manipulación de rutas. Publiqué una respuesta aquí: https://.com/a/40980510/2345997 que es relevante.

formas:

  1. Agregue una opción de línea de comando que le permita a un usuario especificar la ruta en cuestión en lugar de leerla desde un archivo de configuración.
  2. Agregue una opción de línea de comando para que el usuario pueda especificar una ruta base. Las rutas en el archivo de configuración se interpretarán como ubicadas debajo de esta ruta base.
  3. Divida su archivo de configuración en tres. Un archivo tendrá configuración multiplataforma, otro archivo tendrá configuración solo de Windows y un archivo final tendrá configuración solo de Linux. Entonces el usuario puede especificar la ruta correcta para Windows y Linux. En Windows, su programa leerá el archivo de configuración multiplataforma y el archivo de configuración solo de Windows. En Linux, leerá el archivo multiplataforma y el único archivo de configuración de Linux.
  4. Agregue preprocesamiento a su análisis de configuración de archivos. Esto le permitirá tener un archivo de configuración donde el usuario puede hacer que su programa ignore algunas de las líneas del archivo, según el sistema operativo en el que se ejecute el programa. Por lo tanto, el usuario podrá especificar la ruta al archivo dos veces. Una vez para Linux y una vez para Windows.
  5. Cambie el diseño para que los archivos siempre se encuentren en el mismo directorio que el ejecutable; luego, el usuario solo especifica los nombres de archivo en el archivo de configuración en lugar de las rutas a los archivos.
  6. Use una función simple que cambie "/" a "/". Luego documente al usuario que debe especificar rutas como rutas de Linux y esta transformación se aplicará para Windows.
  7. Cree su propio mini-lenguaje de ruta para esto y documentéelo al usuario. Por ejemplo: "/" - especifica un separador de directorio, {root} - se expande a la raíz del sistema de archivos, {cwd} - se expande al directorio actual, {app} - se expande a la ruta de acceso a su aplicación, etc ... Luego el el usuario puede especificar rutas de archivos como: {root} /myfiles/bob.txt en ambas plataformas.
  8. Algunos caminos funcionarán en ambas plataformas. Por ejemplo, rutas relativas como ../my files / bill.txt. Restrinja su aplicación para que solo funcione con estas rutas. Documente esta limitación y cómo su aplicación maneja las rutas al usuario.