小编典典

如何使用 C 或 C++ 获取目录中的文件列表?

all

如何从我的 C 或 C++ 代码中确定目录中的文件列表?

我不允许ls在我的程序中执行命令并解析结果。


阅读 120

收藏
2022-03-03

共1个答案

小编典典

2017 年更新

在 C++17 中,现在有一种列出文件系统文件的官方方法:std::filesystem.下面的Shreevardhan
提供了一个很好的答案,其中包含此源代码(此代码可能会抛出):

#include <string>
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;

int main()
{
    std::string path = "/path/to/directory";
    for (const auto & entry : fs::directory_iterator(path))
        std::cout << entry.path() << std::endl;
}

老答案:

在不使用 boost 的小而简单的任务中,我使用 dirent.h 。它可以作为 UNIX 中的标准头文件使用,也可以通过 Toni Ronkko
创建的兼容层
用于 Windows 。

DIR *dir;
struct dirent *ent;
if ((dir = opendir ("c:\\src\\")) != NULL) {
  /* print all the files and directories within directory */
  while ((ent = readdir (dir)) != NULL) {
    printf ("%s\n", ent->d_name);
  }
  closedir (dir);
} else {
  /* could not open directory */
  perror ("");
  return EXIT_FAILURE;
}

它只是一个小头文件,无需使用像 boost 之类的大型基于模板的方法即可完成您需要的大部分简单工作(无意冒犯,我喜欢 boost!)。

2022-03-03