C++-Äquivalent von Pythons os.makedirs(..., exist_ok=True)

In C++17 können Sie std::filesystem verwenden, das std::filesystem::create_directories bereitstellt.

Ähnlich wie Pythons os.makedirs(..., exist_ok=True) oder der Shell-Befehl mkdir -p wird dies rekursiv Verzeichnisse erstellen.

mkdir_example.cpp
#include <iostream>
#include <filesystem>

namespace fs = std::filesystem;

int main() {
    std::string directoryPath = "output";

    try {
        // Create the directory
        fs::create_directories(directoryPath);
        std::cout << "Directory created successfully." << std::endl;
    } catch (const std::exception& ex) {
        std::cerr << "Error creating directory: " << ex.what() << std::endl;
    }

    return 0;
}

Beachten Sie, dass Sie Ihrem Compiler typischerweise mitteilen müssen, den C++17-Standard zu verwenden. Verwenden Sie beispielsweise für GCC -std=c++17 oder -std=gnu++17, falls Sie GNU-Erweiterungen verwenden möchten

build_mkdir.sh
g++ -o main main.cpp -std=c++17

Wenn Sie einen älteren Compiler verwenden müssen, der C++17 nicht unterstützt, müssen Sie möglicherweise std::experimental::filesystem verwenden, das grundsätzlich dieselbe API bereitstellt, aber im std::experimental::filesystem-Namespace:

mkdir_example_legacy.cpp
#include <iostream>
#include <experimental/filesystem>

namespace fs = std::experimental::filesystem;

int main() {
    std::string directoryPath = "output";

    try {
        // Create the directory
        fs::create_directories(directoryPath);
        std::cout << "Directory created successfully." << std::endl;
    } catch (const std::exception& ex) {
        std::cerr << "Error creating directory: " << ex.what() << std::endl;
    }

    return 0;
}

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