Frage

Stellen Sie keine C ++ GNU eigenständige Klassen existieren, die Pfade behandeln Plattform überqueren? Meine Anwendungen bauen auf Windows und Linux. Unsere Konfigurationsdateien beziehen sich auf eine andere Datei in einem separaten Verzeichnis. Ich möchte den Weg für die anderen Konfigurationsdatei in eine Klasse in der Lage sein zu lesen, die auf Linux- oder Windows funktionieren würde.

Welche Klasse biete die kleinsten Footprint Wege zu übersetzen auf beiden Systemen zu benutzen? Dank

War es hilfreich?

Lösung

Wenn Sie absolute Pfade verwenden, gibt es keine Notwendigkeit, überhaupt zu übersetzen - von Windows automatisch konvertiert Schrägstriche in Schrägstriche, also wenn Sie relative Pfade mit Schrägstrich-Pfad-Separatoren verwenden, werden Sie golden sein. Sie sollten sich wirklich absolute Pfade, wenn möglich vermeiden.

Andere Tipps

Filesystem-Bibliothek in boost wird wahrscheinlich Ihnen helfen.

Es gibt viele Möglichkeiten, IMHO ist die richtige Antwort Ihr Programm neu zu gestalten Wege zu vermeiden, zu manipulieren. Ich stellte eine Antwort hier:. https://stackoverflow.com/a/40980510/2345997 , die relevant ist

Möglichkeiten:

  1. eine Befehlszeilenoption hinzufügen, die ein Benutzer den Pfad in Frage, anstatt es zu Lesen aus einer Konfigurationsdatei angeben kann.
  2. eine Befehlszeilenoption hinzufügen, so dass der Benutzer einen Basispfad angeben. Pfade in der Konfigurationsdatei, wie unter diesem Basispfad befinden interpretiert wird.
  3. Teilen Sie Ihre Konfigurationsdatei in drei. Eine Datei Cross-Plattform-Konfiguration haben wird, wird eine weitere Datei Fenster haben nur Konfiguration und eine letzte Datei wird nur Linux-Konfiguration. Dann kann der Benutzer den richtigen Pfad angeben, für Windows und Linux. Unter Windows Ihr Programm wird die plattformübergreifende Konfigurationsdatei und die Fenster nur Konfigurationsdatei lesen. Unter Linux wird es die plattformübergreifende Datei und die nur Linux-Konfigurationsdatei lesen.
  4. Fügen Sie Vorverarbeitung zu Ihrer Konfigurationsdatei Parsing. Dies ermöglicht Ihnen, eine Konfigurationsdatei haben, wo der Benutzer das Programm ignorieren einige der Zeilen in der Datei in Abhängigkeit von dem machen OS das Programm läuft. Daher wird der Benutzer in der Lage sein, den Pfad zur Datei zweimal angeben. Einmal für Linux, und einmal für Windows.
  5. das Design ändern, so dass die Dateien immer im gleichen Verzeichnis wie die ausführbare Datei befinden sich -. Dann nur der Benutzer der Dateinamen in der Konfigurationsdatei gibt an, anstatt Pfade zu Dateien
  6. Verwenden Sie eine einfache Funktion, die „/“ auf „\“ schaltet. Dann dokumentieren an den Benutzer, dass sie Pfade als Linux Pfade angeben müssen, und diese Transformation wird für Fenster angewendet werden.
  7. Erstellen Sie Ihren eigenen Weg Mini-Sprache für diese und dokumentieren sie für den Benutzer. Zum Beispiel: „/“ - gibt ein Verzeichnis Separator, {root} - erweitert, um die Wurzel des Dateisystems, {cwd} - erweitert auf das aktuelle Verzeichnis, {app} - erweitert, um den Pfad zur Anwendung etc ... Dann wird die Benutzer können Dateipfade wie angeben:. {root} /myfiles/bob.txt auf beiden Plattformen
  8. Einige Wege werden auf beiden Plattformen arbeiten. Z. B: relative Pfade wie ../my Dateien / bill.txt. Schränken Sie Ihre Anwendung mit diesen Pfaden nur zu arbeiten. Dokument dieser Einschränkung und wie Ihre Anwendung behandelt Pfade an den Benutzer.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top