c++ 如何获取文件夹目录下的所有文件名
时间: 2023-10-03 13:05:38 浏览: 210
C++获取指定目录下的所有文件
在C++中,可以使用以下方法来获取文件夹目录下的所有文件名:
1. 使用 `<dirent.h>` 头文件中的函数来遍历文件夹目录。具体步骤如下:
```cpp
#include <iostream>
#include <dirent.h>
#include <vector>
#include <string>
std::vector<std::string> GetFilesInDirectory(const std::string& directory)
{
std::vector<std::string> files;
DIR* dir;
struct dirent* entry;
if ((dir = opendir(directory.c_str())) != nullptr)
{
while ((entry = readdir(dir)) != nullptr)
{
if (entry->d_type == DT_REG) // 只获取普通文件,不包括目录
{
files.push_back(entry->d_name);
}
}
closedir(dir);
}
else
{
std::cout << "无法打开目录:" << directory << std::endl;
}
return files;
}
int main()
{
std::string directory = "your_directory_path";
std::vector<std::string> files = GetFilesInDirectory(directory);
for (const auto& file : files)
{
std::cout << file << std::endl;
}
return 0;
}
```
2. 使用C++17的 `<filesystem>` 头文件 (C++17标准新增)。具体步骤如下:
```cpp
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
std::string directory = "your_directory_path";
for (const auto& entry : fs::directory_iterator(directory))
{
if (entry.is_regular_file()) // 只获取普通文件,不包括目录
{
std::cout << entry.path().filename().string() << std::endl;
}
}
return 0;
}
```
以上两种方法都可以获取文件夹目录下的所有文件名。如果使用C++17及以上版本,推荐使用第二种方法,因为它提供了更简洁的API。如果使用较旧的C++版本,则可以选择第一种方法。
阅读全文