编写一个函数 在由strFolderPath指定的文件夹及其各级子文件夹中查找文件.并将所有文件绝对路径放在vecFilePath 返回文件个数,用递归实现
时间: 2023-05-19 21:02:34 浏览: 81
以下是一个使用递归实现的函数,可以在指定的文件夹及其子文件夹中查找文件,并将所有文件的绝对路径存储在一个向量中返回:
```cpp
#include <iostream>
#include <vector>
#include <filesystem>
namespace fs = std::filesystem;
int FindFiles(const std::string& strFolderPath, std::vector<std::string>& vecFilePath)
{
int nCount = 0;
for (const auto& entry : fs::directory_iterator(strFolderPath))
{
if (entry.is_directory())
{
nCount += FindFiles(entry.path().string(), vecFilePath);
}
else if (entry.is_regular_file())
{
vecFilePath.push_back(entry.path().string());
++nCount;
}
}
return nCount;
}
int main()
{
std::vector<std::string> vecFilePath;
int nCount = FindFiles("C:/TestFolder", vecFilePath);
std::cout << "Found " << nCount << " files:\n";
for (const auto& strFilePath : vecFilePath)
{
std::cout << strFilePath << "\n";
}
return 0;
}
```
注意,这个函数使用了 C++17 中的文件系统库,需要在编译时加入 `-lstdc++fs` 参数。
阅读全文