这段代码是一个递归遍历目录的函数。它使用了std::filesystem
库来操作文件系统。
函数traverseDirectory
接受一个目录路径和一个空的字符串向量作为参数,用于存储遍历到的文件路径。
在函数内部,通过fs::directory_iterator(directoryPath)
创建一个目录迭代器,并使用范围循环遍历每个目录条目。
如果当前条目是一个子目录(使用fs::is_directory(entry)
判断),则对该子目录进行递归调用,以继续遍历其下层子目录。
如果当前条目是一个普通文件(使用fs::is_regular_file(entry)
判断),则将其路径转换为字符串,并添加到datapath
向量中。
这样,经过递归遍历后,你可以获取到给定目录下所有文件的路径。
例如:
#include <iostream>
#include <filesystem>
#include <vector>
namespace fs = std::filesystem;
void traverseDirectory(const std::string& directoryPath, std::vector<std::string>& datapath)
{
for (const auto& entry : fs::directory_iterator(directoryPath))
{
if (fs::is_directory(entry))
{
// 递归遍历子目录
traverseDirectory(entry.path().string(), datapath);
}
else if (fs::is_regular_file(entry))
{
std::string filePath = entry.path().string();
datapath.emplace_back(filePath);
}
}
}
int main()
{
std::vector<std::string> filepaths;
traverseDirectory("path/to/directory", filepaths);
for (const auto& filepath : filepaths)
{
std::cout << filepath << std::endl;
}
return 0;
}
你可以将实际的目录路径替换为”path/to/directory”,然后运行代码以遍历该目录下的所有文件,并打印出每个文件的路径。
内容由零声教学AI助手提供,问题来源于学员提问