Frage

Ich bin ein Cross-Plattform-Anwendung zu schreiben, die Windows-Pfade überprüfen muss und manipulieren.

Insbesondere für das jeweilige Problem, das ich jetzt habe, muß ich wissen, ob ein Pfad absolut oder relativ ist.

Der aktuelle Code verwendet boost::filesystem::path natürlich, die wie ein Zauber auf Windows funktioniert:

boost::filesystem::path the_path(the_path_as_a_string);
if (!the_path.has_root_path()) { /* do stuff */ }

Das Problem bei diesem Ansatz ist, dass boost::filesystem::path hat nur zwei Modi: Muttersprache und tragbar. Dies bedeutet, dass die Windows-Pfad Grammatik nicht verfügbar ist, wenn ich unter Linux kompilieren (es wird in der Quelle #ifdefed out). Daher ist der Weg.: "C \ Pfad" absolute betrachtet in Windows, aber relativ in Linux


Kann euch empfehlen eine plattformübergreifende C ++ Bibliothek, die überprüfen können und Windows-Pfade manipulieren?


Für den Moment der einzige Windows-Pfad Operation ich tue, ist zu prüfen, ob ein Pfad absolut ist oder nicht.

Das Kriterium ich für einen absoluten Pfad verwenden, ist, dass es sowohl einen Laufwerksbuchstaben enthält, und der Weg beginnt mit \. Ein Beispiel eines absoluten Pfad unter diesem Kriterium wird C:\path. Diese sind beide Beispiele für relative Pfade unter diesem Kriterium. C:path, \path

War es hilfreich?

Lösung 2

Es scheint schwierig zu sein, eine Bibliothek für diese zu finden. Eine Möglichkeit ist PathIsRelative in Winelib, aber ich will nicht Winelib verwenden.

I endete eine sehr spezifische Lösung auf nur tun, für diese kleine Sache zu entscheiden. Unter der Annahme, dass der Pfad korrekt ist (eine faire Annahme, in meinem Fall), ein absoluter Pfad :\ enthalten wird, während ein relativer Pfad nicht.

Also, die schlecht, aber die Arbeit, Lösung: Es gibt keine geeignete Bibliothek. Überprüfen Sie die Existenz von :\.

Andere Tipps

Was ist QT mit QFileInfo ?

Könnten Sie näher ausführen, was das Programm gemeint ist, mit den Windows-Pfaden auf Linux zu tun?

Vielleicht ist es ausreichend, eine einfache Transformation in die Windows-Pfadzeichenfolge anzuwenden, syntaktisch es in einen Unix-Pfad transformieren, und verwenden Sie dann boost :: filesystem es zu manipulieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top