rotalever
2007-07-09, 18:30:45
Der User gibt eine Datei als Pfad an. Z.B.: bla/blub/datei.cfg
In dieser Datei steht ein weiterer Dateipfad zum Beispiel: foo/xyz.txt
Der Pfad foo/xyz.txt soll relativ zu bla/blub/datei.cfg sein, da die Angabe ja in diesem Pfad findet. Ein korrektes aneinanderhängen der Pfade wäre also
bla/blub/foo/xyz.txt
Aber leider geben die User ja nicht immer so einfaches an, z.B. auch:
./foo/xyz.txt
.././../blub/blub/xyz.txt
oder sogar Windowspfade
..\xyz.txt
oder vll. auch mal absolute (weniger das Problem, da man diese nur erkennen muss)
/tmp/xyz.txt
c:/bla\xyz.txt
Ich benötige eine C++ routine die zwei solche Pfade aneinanderfügt. Eigentlich ja simpel zu programmieren aber durch die verschiedenen Kombinationen (Windows/Unix, Relativ/Absolut) doch irgendwie mühsam.
Gibt es irgendwo eine fertige Routine, die ich einfach nutzen kann (ohne irgend ne blöde Lizenz und keine riesige Bibliothek)? Oder muss ich mich dransetzen und das selber machen?
In dieser Datei steht ein weiterer Dateipfad zum Beispiel: foo/xyz.txt
Der Pfad foo/xyz.txt soll relativ zu bla/blub/datei.cfg sein, da die Angabe ja in diesem Pfad findet. Ein korrektes aneinanderhängen der Pfade wäre also
bla/blub/foo/xyz.txt
Aber leider geben die User ja nicht immer so einfaches an, z.B. auch:
./foo/xyz.txt
.././../blub/blub/xyz.txt
oder sogar Windowspfade
..\xyz.txt
oder vll. auch mal absolute (weniger das Problem, da man diese nur erkennen muss)
/tmp/xyz.txt
c:/bla\xyz.txt
Ich benötige eine C++ routine die zwei solche Pfade aneinanderfügt. Eigentlich ja simpel zu programmieren aber durch die verschiedenen Kombinationen (Windows/Unix, Relativ/Absolut) doch irgendwie mühsam.
Gibt es irgendwo eine fertige Routine, die ich einfach nutzen kann (ohne irgend ne blöde Lizenz und keine riesige Bibliothek)? Oder muss ich mich dransetzen und das selber machen?