C++ 递归搜索文件或文件夹代码解析
这是一个使用 C++17 文件系统库递归搜索指定目录下的文件或文件夹,找到目标文件或文件夹后输出路径的代码。
首先,代码通过头文件 <filesystem> 引入 C++17 标准中的文件系统库,并使用 namespace fs = std::filesystem; 定义别名,方便后续调用。
代码定义了一个名为 search 的函数,该函数接受两个参数:目录路径 dir_path 和目标名称 target_name。在函数内部,代码使用 for 循环遍历目录中的每个文件或文件夹。如果当前条目是文件夹,则递归调用 search 函数;如果是文件,则判断文件名是否与 target_name 相同。如果相同,则输出该文件的路径。
在 main 函数中,代码初始化目录路径为 'C:/Users/',目标名称为 'Desktop',并调用 search 函数进行搜索。最后,代码返回 0,表示程序运行成功结束。
代码示例:
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
void search(fs::path dir_path, const std::string& target_name) {
for (const auto& entry : fs::directory_iterator(dir_path)) {
if (entry.is_directory()) {
search(entry.path(), target_name);
} else {
if (entry.path().filename() == target_name) {
std::cout << "Found '" << target_name << "' at " << entry.path().string() << std::endl;
}
}
}
}
int main() {
fs::path dir_path = "C:/Users/";
std::string target_name = "Desktop";
search(dir_path, target_name);
return 0;
}
代码解析:
- 头文件
<filesystem>: 引入 C++17 文件系统库,该库提供了一系列用于操作文件和目录的类和函数。 - 命名空间别名:
namespace fs = std::filesystem;使用别名fs来简化文件系统库的调用。 search函数:- 该函数接受两个参数:
dir_path和target_name。 - 使用
for循环遍历目录中的每个文件或文件夹。 entry.is_directory()判断当前条目是否为文件夹。entry.path().filename() == target_name判断文件名是否与目标名称相同。
- 该函数接受两个参数:
main函数:- 初始化目录路径和目标名称。
- 调用
search函数进行搜索。 - 返回 0,表示程序运行成功结束。
原文地址: https://www.cveoy.top/t/topic/nMqF 著作权归作者所有。请勿转载和采集!