Verzeichnisse
-
Hallo
gibt es einen Weg, der einfach und portabel (min. Lin*x und DOS/Win32) ist,
um in C++ oder C die Files in einem Verzeichnis bei gegebenem Pfadnamen zu erhalten; ich suche
also (C/C++)-Äquivalente für die Python-Funktionen
os.listdir(path) oder auch
os.walk(top_path)Grüße
-
Die dirent.h gibts imho in beiden Systemen.
Ansonsten könnte man sich eine Krücke bauen indem man per system("dir >c:\tmp\path.txt"), bzw. system("ls - lisa >/tmp/path.txt") das Verzeichnis in eine Textdatei schreiben und diese dann auslesen. Ist aber nicht gerade eine Elegante Lösung.
-
Hallo
Du kannst auch boost:filesystem nutzen.
chrische
-
und hier
http://www.boost.org/libs/filesystem/doc/index.htm#tutorial
ist sogar ein Beispiel wie das damit geht (unter Directory iterator).
-
Hallo
Danke für Eure Vorschläge!
Da ich für den Anfang gerne ohne größere Zusatz-Libraries auskommen
würde, probiere ich zuerst einmal die Idee von DocJunioR aus.Grüße
-
Hobbyprogrammierer schrieb:
...
Da ich für den Anfang gerne ohne größere Zusatz-Libraries auskommen
würde, probiere ich zuerst einmal die Idee von DocJunioR aus.Grüße
Da aber AFAIK dirent.h ebensowenig C++-Standard ist wie Boost (letzterer ist aber immerhin Kandidat), kannst Du es ebensogut mit Boost probieren
.
(wobei ich nicht sicher bin, inwieweit Boost sich doch wieder dirent.h oder anderer non-Standards bedient)Gruß,
Simon2.
-
Mein Tip: Nimm Boost, der Overhead sollte nicht so groß sein, da der Linker ja nur die Benutzten Teile der Boost Lib mit in dein Programm linkt.
Wenn du es trozdem ohne lib machen willst, kannst du einfach mithilfe des Präprozessors und #ifdef eine zur Plattform passende Funktion schreiben.
Für Windows musst du die windows.h includieren und die passende Funktion heißt CreateDirectory("PFAD"). Unter Linux musst du halt mal ein bisschen in den Manpages stöbern.
-
Hallo
Nochmal Danke für die Vorschläge.
Wie gesagt, ich möchte boost für dieses kleine Problem eigentlich nicht
benutzen, (habe boost im Augenblick auch nicht installiert) und DocJunioR's Lösung, dir bzw. ls in eine Datei umzuleiten und die Filenamen/Verzeichnisnamen aus der Datei zu holen, ist für meinen Zweck gut genug. Außerdem von schwer
zu schlagender Portabilität, da sie auf jedem OS und mit jedem Compiler
funktioniert.Dennoch weiß ich die Lösung mit boost zu würdigen

Grüße
-
Gab es hier im Forum nicht mal einen Thread mit ein paar Gründen warum system() böse ist. Kann aber auch sein das ich mich irre und das mit etwas anderem verwechsle. Sollange es funktioniert, ist es ja gut.
