[FIXED] Wie kann ich die Liste der Dateien in einem Verzeichnis mit C oder C++ abrufen?

Ausgabe

Wie kann ich die Liste der Dateien in einem Verzeichnis in meinem C- oder C++-Code ermitteln?

Ich darf den lsBefehl 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)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like

[FIXED] makecontext-segfault?

Ausgabe Ich arbeite an einer Hausaufgabe, die im nächsten Semester fällig wird. Es erfordert, dass wir unsere eigene…