PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zwei Dateipfade aneinanderhängen


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?

Trap
2007-07-09, 18:53:54
Da gibt es eine boost lib zu:
http://www.boost.org/libs/filesystem/doc/index.htm

Die boost libs sind BSD und einzeln linkbar.

rotalever
2007-07-09, 19:56:51
Da gibt es eine boost lib zu:
http://www.boost.org/libs/filesystem/doc/index.htm

Die boost libs sind BSD und einzeln linkbar.
Hmm ja aber ich möchte nicht noch eine Bibliothek benutzen, ich hab schon so viele. Für ein Projekt nur für mich wäre mir das egal, aber dem ist leider nicht so...

Coda
2007-07-09, 20:24:23
Boost ist aber für viele viele andere Dinge auch nützlich.

rotalever
2007-07-09, 21:15:34
Jo, aber wenn ich es für meine Bibliothek nutze und Boost für eine einzige popelige Funktion nutze und somit der Nutzer eine weitere dependencie hat ist das vll. nicht angepbracht. Ich habe eigentlich schon jetzt viel zu viele dependencies aber was will man machen.... Ab jetzt kommt auf jedenfall keine neue mehr hinzu und vll. überlege ich mir noch Konzepte um andere Bibliotheken auch möglichst zu vermeiden, wobei das mit erheblich mehr Aufwand meinerseits verbunden wäre.

Aber wie es mir scheint, gibt es leider keine solche unabhängige Prozedur, sozusagen als codeschnipsel irgendwo. Ich muss mich wohl selber dransetzen :|