Question

Existe-t-il des classes autonomes C ++ GNU qui gèrent des chemins inter-plateformes? Mes applications reposent sur Windows et Linux. Nos fichiers de configuration font référence à un autre fichier dans un répertoire séparé. J'aimerais 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 au sol pour traduire les chemins à utiliser sur l'un ou l'autre système? Merci

Était-ce utile?

La solution

Sauf si vous utilisez des chemins absolus, vous n'avez pas besoin de traduire. Windows convertit automatiquement les barres obliques inversées en barres obliques inversées. Ainsi, si vous utilisez des chemins relatifs avec des séparateurs de chemin, vous serez dorés. Vous devriez vraiment éviter les chemins absolus si possible.

Autres conseils

La bibliothèque de système de fichiers enrichie sera probablement vous aider.

Il y a plusieurs façons, à mon humble avis, la bonne solution consiste à modifier la conception de 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. Ajouter une option de ligne de commande permettant à un utilisateur de spécifier le chemin en question au lieu de le lire depuis un fichier de configuration.
  2. Ajoutez une option de ligne de commande pour permettre à l'utilisateur de 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 multiplate-forme, un autre fichier aura une configuration uniquement Windows et un fichier final aura une configuration uniquement Linux. Ensuite, l'utilisateur peut spécifier le chemin correct pour Windows et Linux. Sous Windows, votre programme lira le fichier de configuration multiplate-forme et le fichier de configuration Windows uniquement. Sous Linux, le fichier multiplate-forme et le fichier de configuration Linux uniquement seront lus.
  4. Ajoutez le prétraitement à l'analyse de votre fichier de configuration. Cela vous permettra d’avoir un fichier de configuration dans lequel 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'accès au fichier deux fois. Une fois pour Linux et une fois pour Windows.
  5. Modifiez la conception de sorte que les fichiers se trouvent toujours dans le même répertoire que votre exécutable. Dans ce cas, l'utilisateur ne spécifie que les noms de fichier dans le fichier de configuration plutôt que les chemins d'accès aux fichiers.
  6. Utilisez une fonction simple qui bascule " / " à "\". Indiquez ensuite à l'utilisateur qu'il doit spécifier les 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. E.g: " - 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 dans le chemin de votre application, etc. ... Ensuite, l'utilisateur peut spécifier les chemins de fichiers comme: {root} /myfiles/bob.txt sur les deux plates-formes.
  8. Certains chemins vont fonctionner sur les deux plates-formes. E.g: les chemins relatifs tels que ../my files / bill.txt. Restreindre votre application pour ne travailler qu'avec ces chemins. Documentez cette limitation et la manière dont votre application gère les chemins d'accès à l'utilisateur.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top