Ausgabe
Wie kann ich die Liste der Dateien in einem Verzeichnis in meinem C- oder C++-Code ermitteln?
Ich darf den ls
Befehl nicht ausführen und die Ergebnisse in meinem Programm analysieren.
Lösung
UPDATE 2017 :
In C++17 gibt es jetzt eine offizielle Möglichkeit, Dateien Ihres Dateisystems aufzulisten: std::filesystem
. Es gibt eine ausgezeichnete Antwort von Shreevardhan unten mit diesem Quellcode:
#include <string> #include <iostream> #include <filesystem> namespace fs = std::filesystem; int main() { std::string path = "/path/to/directory"; for (const auto & entry : fs::directory_iterator(path)) std::cout << entry.path() << std::endl; }
Alte Antwort:
Bei kleinen und einfachen Aufgaben verwende ich nicht boost, sondern dirent.h . Es ist als Standard-Header in UNIX verfügbar und auch für Windows über eine von Toni Ronkko erstellte Kompatibilitätsschicht verfügbar .
DIR *dir;
struct dirent *ent;
if ((dir = opendir ("c:\\src\\")) != NULL) {
/* print all the files and directories within directory */
while ((ent = readdir (dir)) != NULL) {
printf ("%s\n", ent->d_name);
}
closedir (dir);
} else {
/* could not open directory */
perror ("");
return EXIT_FAILURE;
}
Es ist nur eine kleine Header-Datei und erledigt die meisten einfachen Dinge, die Sie brauchen, ohne einen großen Template-basierten Ansatz wie Boost zu verwenden (nichts für ungut, ich mag Boost!).
Beantwortet von – Peter Parker
Antwort geprüft von – Cary Denson (FixError Admin)