在 Windows 平台上,可以使用 C++ 17 引入的 `std::filesystem` 标准库来实现访问一个文件夹下的所有文件,并将它们存入一个数组中,具体实现如下:
#include <iostream>
#include <filesystem>
#include <vector>
std::vector<std::string> ListFiles(const std::string& path)
{
std::vector<std::string> files;
std::filesystem::directory_iterator iter(path);
for (const auto& entry : iter)
{
if (entry.is_directory())
{
// 如果是目录,则递归遍历子目录
auto sub_files = ListFiles(entry.path().string());
files.insert(files.end(), sub_files.begin(), sub_files.end());
}
else
{
// 如果是文件,则将文件路径添加到数组中
files.push_back(entry.path().string());
}
}
return files;
}
int main()
{
std::string path = "C:\\Windows\\System32";
std::vector<std::string> files = ListFiles(path);
// 输出所有文件路径
for (const auto& file : files)
{
std::cout << file << '\n';
}
return 0;
}
</std::string></std::string></std::string></vector></filesystem></iostream>
上述代码中,`std::filesystem::directory_iterator` 用来遍历指定路径下的所有文件和子目录,`entry.is_directory()` 判断当前遍历到的路径是否为目录,如果是,则递归调用 `ListFiles` 函数继续遍历子目录,否则使用 `entry.path().filename()` 输出文件名。
需要注意的是,Windows 平台上的路径分隔符是反斜杠 \,但是在 C++ 中反斜杠需要转义,因此需要使用两个反斜杠来表示一个反斜杠:`C:\\Windows\\System32`