Gestion des chemins de fichiers entre plates-formes

Existe-t-il des classes autonomes GNU C ++ qui gèrent les chemins entre plates-formes? Mes applications s’appuient sur Windows et LInux. Nos fichiers de configuration font référence à un autre fichier dans un répertoire séparé. Je voudrais pouvoir lire le chemin de l’autre fichier de configuration dans une classe qui fonctionnerait sous Linux ou Windows.

Quelle classe offrirait la plus petite empreinte pour traduire les chemins à utiliser sur l’un ou l’autre des systèmes? Merci

À moins que vous n’utilisiez des chemins absolus, il n’est pas nécessaire de traduire – Windows convertit automatiquement les barres obliques en barres obliques inverses. Si vous utilisez des chemins relatifs avec des séparateurs de chemin de barre oblique, vous serez en or. Vous devriez vraiment éviter les chemins absolus si possible.

essayez boost :: système de fichiers

La librairie de système de fichiers en boost va probablement vous aider.

Il existe de nombreuses façons, à mon humble avis, la bonne réponse est de repenser votre programme pour éviter de manipuler les chemins. J’ai posté une réponse ici: https://stackoverflow.com/a/40980510/2345997 qui est pertinente.

façons:

  1. Ajoutez une option de ligne de commande qui permet à un utilisateur de spécifier le chemin en question au lieu de le lire à partir d’un fichier de configuration.
  2. Ajoutez une option de ligne de commande pour que l’utilisateur puisse spécifier un chemin de base. Les chemins du fichier de configuration seront interprétés comme situés sous ce chemin de base.
  3. Divisez votre fichier de configuration en trois. Un fichier aura une configuration multiplateforme, un autre fichier aura une configuration Windows uniquement et un fichier final aura une configuration Linux uniquement. Ensuite, l’utilisateur peut spécifier le chemin correct pour Windows et Linux. Sur Windows, votre programme lit le fichier de configuration multiplate-forme et le fichier de configuration Windows uniquement. Sous Linux, il lira le fichier multiplate-forme et le fichier de configuration Linux uniquement.
  4. Ajoutez le prétraitement à votre parsing de fichier de configuration. Cela vous permettra d’avoir un fichier de configuration où l’utilisateur peut faire en sorte que votre programme ignore certaines des lignes du fichier en fonction du système d’exploitation sur lequel le programme est exécuté. Par conséquent, l’utilisateur pourra spécifier le chemin d’access au fichier deux fois. Une fois pour Linux et une fois pour Windows.
  5. Modifiez la conception de sorte que les fichiers soient toujours situés dans le même répertoire que votre exécutable. L’utilisateur spécifie alors uniquement les noms de fichiers dans le fichier de configuration plutôt que les chemins d’access aux fichiers.
  6. Utilisez une fonction simple qui bascule “/” sur “\”. Ensuite, documentez à l’utilisateur qu’il doit spécifier des chemins en tant que chemins Linux et que cette transformation sera appliquée aux fenêtres.
  7. Créez votre propre mini-langage de chemin pour cela et documentez-le à l’utilisateur. Par exemple: “/” – spécifie un séparateur de répertoire, {root} – se développe à la racine du système de fichiers, {cwd} – se développe dans le répertoire actuel, {app} – se développe sur le chemin de votre application etc. L’utilisateur peut spécifier des chemins de fichiers tels que: {root} /myfiles/bob.txt sur les deux plates-formes.
  8. Certains chemins fonctionneront sur les deux plates-formes. Par exemple: chemins relatifs tels que ../my files / bill.txt. Restreignez votre application pour ne fonctionner qu’avec ces chemins. Documentez cette limitation et comment votre application gère les chemins d’access à l’utilisateur.