Esta es la respuesta que obtuve de Silje Johansen - Ingeniero de Soporte - Trolltech ASA (marzo de 2008 aunque)
Sin embargo. la complejidad de incluir la configuración regional y encontrar una forma unificada de consultar los sistemas de archivos en Linux/Unix sobre su funcionalidad es casi imposible.
Sin embargo, que yo sepa, todas las aplicaciones que conozco ignoran este problema .
(léase: no van a ponerlo en práctica)
Boost no resuelve el problema, que sólo dan una idea vaga de la longitud máxima de los caminos, especialmente si quieres estar plataforma cruzada. Por lo que sé, muchos han intentado y no han podido resolver este problema (al menos en teoría, en la práctica es definitivamente posible escribir un programa que crea nombres de archivo válidos en la mayoría de los casos.
Si desea implementar esto por sí mismo, podría valer la pena considerar algunas cosas no inmediatamente obvias como:
Las complicaciones con caracteres no válidos
La diferencia entre las limitaciones del sistema de archivos y las limitaciones del sistema operativo y software.El Explorador de Windows, que considero parte del sistema operativo Windows, no es totalmente compatible con NTFS, por ejemplo. Los archivos que contienen ':' y '?', Etc ... pueden residir felizmente en una partición ntfs, pero Explorer simplemente los ahoga. Aparte de eso, puede jugar seguro y utilizar las recomendaciones de Boost Filesystem.
Las complicaciones con la longitud de la trayectoria
El segundo problema no abordado plenamente por la página de impulso es la longitud de la ruta completa. Probablemente, lo único que es cierto en este momento es que ninguna combinación de sistema de archivos/OS admite longitudes de ruta indefinidas. Sin embargo, las afirmaciones como "Las rutas máximas de Windows están limitadas a 260 caracteres" son incorrectas. La API Unicode de Windows le permite crear rutas de hasta 32.767 utf-16 caracteres. No lo he comprobado, pero imagino que Explorer se asfixia con la misma dedicación, lo que haría que esta característica sea completamente inútil para el software que tenga usuarios que no sean usted (por otro lado, es posible que prefiera no tener el estrangulador de software a coro).
Existe una variable antigua que recibe el nombre de PATH_MAX, que suena prometedor, pero el problema es que PATH_MAX simply isn't.
Para finalizar con una nota constructiva, aquí hay algunas ideas sobre posibles formas de codificar una solución.
- Use define para hacer secciones específicas del sistema operativo. (Qt can help you with this)
- uso Los consejos que se dan en la página impulso y la documentación del sistema operativo y el sistema de archivos para decidir sobre sus caracteres no válidos
- Para longitud de la trayectoria de la única idea viable que me viene a la mente es un ensayo árbol binario un enfoque de error mediante el manejo de errores de las llamadas al sistema para verificar una longitud de ruta válida. Esto es bastante distante, pero podría ser la única posibilidad de obtener resultados precisos en una variedad de sistemas.
- Ponte a la altura del elegante manejo de errores.
Espero que esto haya dado algunas ideas.
'boost' es definitivamente una opción ¡y eso es perfecto! Muchas gracias ! – ereOn
Nota boost no verifica nombres inválidos (en win) como com, lpt, aux, etc., para aquellos que no recuerdan los días de DOS. –