Verzeichnis auslesen (VC++)



  • Hi,

    gerne würde ich mir den Inhalt eines Verzeichnisses ausgeben lassen und dabei bestimmen, ob es sich bei den gefundenen Objekten um Dateien oder wiederum Verzeichnisse handelt, damit ich rekursiv auch die gefundenen Verzeichnisse wieder nach Objekten durchsuchen kann. Auf diese Weise würde ich gerne eine Liste aller Dateien in einem Verzeichnisbaum erhalten.

    Nun habe ich einige Beispiele für Linux-Systeme gefunden, die die Bibliothek dirent.h verwenden. Ich hätte aber gerne eine Lösung für mein Visual C++ und würde dabei ungern auf die MFC zurückgreifen.

    Wie gehe ich am besten vor?

    Vielen Dank für eure Bemühungen, viele Grüße

    Birger



  • vielleicht ist das boost filesystem was für dich



  • Hi,

    vielen Dank für die Antwort.

    Inzwischen habe ich allerdings auch WIN32_FIND_DATA aus der windows.h gefunden, womit solche Datei- und Verzeichnisoperationen ganz einfach funktionieren.

    Dazu allerdings noch eine Frage:
    Wie kann ich zwei Zeichenketten vom Typ LPCTSTR konkatenieren? Bisher habe ich es über den Umweg gelöst, zunächst in String zu casten, dann die Konkatentaion durchzuführen und dann wieder zurück zu wandeln.

    Gibt es eine sinnvollere Methode?

    Vielen Dank, viele Grüße

    Birger



  • ...in dem Du einen Teil in einen anderen Buffer kopierst ?!

    char ziel[MAX_PATH];
    int len = ??;
    memcpy(ziel,quelle,len);
    ziel[len] = '0';
    memmove(quelle,quelle+len,strlen(quelle+len)+1);
    

    in etwas ... was willst Du denn erreichen ?





  • Hi,

    vielen Dank für eure Antworten. Zur Frage, was ich erreichen wollte:

    Ich lese über die Methoden aus WIN32_FIND_DATA rekrusiv einen Verzeichnisbaum ein, bekomme dann die Datei- bzw. Verzeichnisnamen als LPCTSTR. Doch Zeichenketten dieses Typs kann ich leider schlecht bearbeiten.

    Mit der Konkatenation wollte ich zum Beispiel den Pfad eines gefundenen Verzeichnisses ergänzen und noch etwas anhängen, das mache ich nun mit:

    string s = path + "/" + ((string) filename) + "/.";

    Das ist nicht langsamer, als die memcpy und memmove Methoden, wie ich festgestellt habe und somit ok.

    Vielen Dank und viele Grüße

    Birger


Anmelden zum Antworten