Verzeichnis mit C++17-filesystem-Bibliothek auflisten

English Deutsch

To list a directory (non-recursively) using the C++17 filesystem library use this snippet:

filesystem-iterator-snippet.cpp
#include <experimental/filesystem>

using namespace std::experimental::filesystem;

for(const directory_entry& entry : directory_iterator("my-directory")) {
    const auto& path = entry.path();
    // ...
}

Vollständiges Beispiel:

filesystem-listing-example.cpp
#include <iostream>
#include <string>
#include <experimental/filesystem>

using namespace std;
using namespace std::experimental::filesystem;

int main() {
    for(const directory_entry& entry : directory_iterator("my-directory")) {
        // Ist es eine Datei / ein Verzeichnis?
        bool isNormalFile = is_regular_file(entry);
        bool isDirectory = is_directory(entry);

        auto path = entry.path();
        // Pfad: my-directory/test.txt
        string pathString = path.string();

        // Dateiname: test.txt
        string filenameString = path.filename().string();

        // Erweiterung: txt
        string extensionString = path.extension().string();

        // HINWEIS: Du kannst auch direkt "cout << path" verwenden
    }
}

Kompiliere so:

build-filesystem-example.sh
g++ -o filesystem-example filesystem-example.cpp -lstdc++fs

Für dieses Verzeichnis:

my-directory-tree.txt
my-directory
├── subdirectory
│   └── subdir-test.txt
└── test.txt

dies wird nur subdirectory und test.txt auflisten


Check out similar posts by category: C/C++