在标准C++中,递归遍历文件/目录可以通过使用<filesystem>
库来实现。以下是一个简单的示例,展示了如何递归遍历目录及其子目录中的所有文件:
#include<iostream>
#include<filesystem>
void traverse_directory(const std::filesystem::path& path) {
if (std::filesystem::is_directory(path)) {
for (const auto& entry : std::filesystem::directory_iterator(path)) {
if (entry.is_directory()) {
traverse_directory(entry.path());
} else {
std::cout << "File: "<< entry.path()<< std::endl;
}
}
} else {
std::cout << "File: "<< path<< std::endl;
}
}
int main() {
std::filesystem::path root_path("path/to/your/directory");
traverse_directory(root_path);
return 0;
}
在这个示例中,我们首先检查给定的路径是否为目录。如果是目录,我们遍历其中的所有条目,如果条目是另一个目录,我们递归地调用traverse_directory
函数。如果条目是文件,我们将其路径打印到控制台。如果给定的路径不是目录,我们直接打印该路径。
请注意,这个示例仅适用于C++17及更高版本。如果您使用的是较旧的C++标准,您可能需要使用第三方库(如Boost.Filesystem)来实现类似的功能。
领取专属 10元无门槛券
手把手带您无忧上云