📜  c++ 获取目录中的文件 - C++ (1)

📅  最后修改于: 2023-12-03 14:59:49.591000             🧑  作者: Mango

C++ 获取目录中的文件

在开发过程中,有时需要获取目录中的所有文件列表,方便程序做一些相关操作。本文将介绍如何使用 C++ 获取目录中的所有文件。

使用系统函数

C++ 提供了一些系统函数可以帮助我们完成获取目录中文件的工作。常见的是 opendir()readdir()closedir() 函数。

#include <iostream>
#include <dirent.h>

int main() {
    std::string directoryPath = "/path/to/directory";
    DIR *dir = opendir(directoryPath.c_str());
    if (dir) {
        struct dirent *entry;
        while ((entry = readdir(dir)) != nullptr) {
            std::cout << entry->d_name << std::endl;
        }
        closedir(dir);
    } else {
        std::cerr << "Failed to open directory" << std::endl;
    }
    return 0;
}

上述程序通过 opendir() 函数打开目录,然后通过 readdir() 函数读取目录中的每个文件,最后使用 closedir() 函数关闭目录。

使用 C++17 的文件系统库

C++17 引入了文件系统库,使用起来更加方便。需要注意的是,需要使用 -std=c++17 参数编译代码。

#include <iostream>
#include <filesystem>

int main() {
    std::string directoryPath = "/path/to/directory";
    for (const auto &entry : std::filesystem::directory_iterator(directoryPath)) {
        std::cout << entry.path().string() << std::endl;
    }
    return 0;
}

上述程序中,需要包含 filesystem 头文件。directory_iterator 可以迭代目录中的所有文件。

总结

本文分别介绍了使用系统函数和 C++17 的文件系统库获取目录中的所有文件列表的方法。读者可以根据自己的需要选择适合的方式。