📅  最后修改于: 2023-12-03 14:59:49.591000             🧑  作者: Mango
在开发过程中,有时需要获取目录中的所有文件列表,方便程序做一些相关操作。本文将介绍如何使用 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 引入了文件系统库,使用起来更加方便。需要注意的是,需要使用 -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 的文件系统库获取目录中的所有文件列表的方法。读者可以根据自己的需要选择适合的方式。