Wie Liste ich die Unterverzeichnisse im Windows mit C++?
wie Liste ich die Unterverzeichnisse im windows mit C++? Verwendung von code, der ausgeführt werden würde cross-Plattform-ist besser.
- erste, Sie suchen, dann versuchen Sie etwas und dann poste den code, wo du steckst.
- Cross-Plattform? boost.org/doc/libs/1_40_0/libs/filesystem/doc/index.htm
- mögliche Duplikate von Liste der directory-Inhalt mithilfe von C und Windows
- Warum link zur Dokumentation für eine version ist fast zwei Jahre alt? Boost.Dateisystem-API hat sich seitdem erheblich verändert (v3 vs. v2), so lohnt es sich, die Verknüpfung zu aktuelle docs.
- de Martel @ildjarn Dank für den boost-Referenz. Es ist sehr informativ, aber ich will nur POSIX-standards, wenn möglich.
- Sie sagen, Sie wollen eine Lösung für Windows, vorzugsweise cross-Plattform, und Anhänger der POSIX-standards? Bilden Sie sich Ihre Meinung... ;-] (Wirklich obwohl, pick.)
- Wenn Sie an POSIX, dann könnte man immer Durcheinander herum mit
dirent.h
. - Auch die erste Priorität ist code, der ausgeführt wird in Windows, da die software, die derzeit ausgeführt wird in Windows. Die zweite Priorität ist die cross-Plattform -, POSIX-standards code, da wir planen die migration auf UNIX/Linux bald. Wir haben immer das Gefühl sträubt mit Boost, mit Ausnahme des Teils, der sich c++ - standards. So.. der menschliche Geist kompliziert ist ;p. @Etienne-de-Martel, ich werde versuchen Herumspielen mit
dirent.h
Dank! - Boost.Dateisystem v3 ist in TR2, so, wenn Sie denken, TR1 (
shared_ptr<>
,bind<>
,function<>
usw.) 'standard' ist, dann TR2 (und folglich zu Steigern.Filesystem) sollte als "standard" als gut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
http://msdn.microsoft.com/en-us/library/aa364418(v=vs. 85).aspx
und
http://msdn.microsoft.com/en-us/library/aa365200(v=vs. 85).aspx
seine crossplattform zwischen windows vista/7 oder vielleicht xp 😛
WIN32_FIND_DATA.dwFileAttributes
Teil das Ergebnis von Funktionen, die oben fürFILE_ATTRIBUTE_DIRECTORY
Wert zu überprüfen, wenn das Ergebnis ist ein Verzeichnis. Auch sollten Sie prüfen, für.
und..
wie Sie sind zurückgekehrt, da die Ergebnisse auch.Hier ist meine Lösung für das problem, es ist nur ein Windows-Lösung wenn. Ich möchte an einem cross-Plattform-Lösung, aber nicht mit boost.
Hier ist eine relativ gute Lösung, die funktionieren sollte cross-Plattform. Sie müssen ändern Sie den Abschnitt des Codes, wo Sie wollen, dass es etwas zu tun, aber ansonsten sollte es ganz gut funktionieren.
Dies ist ziemlich prägnant-code und listet alle Unterverzeichnisse und Dateien im Verzeichnis. Wenn Sie es haben wollen Liste alle Inhalte, die in jedem sub-directory, kann man rekursiv die Funktion aufrufen, indem in der sub-Verzeichnis auf der Linie druckt "Dies ist ein Verzeichnis." So etwas wie Liste(fileinfo.name); sollte den trick tun.
Blick auf Boost.Dateisystem. Es ist cross-Plattform und kostenlos.
Können Sie die dirent bib. Weitere details sind hier