如何从我的 C 或 C++ 代码中确定目录中的文件列表?
我不允许ls在我的程序中执行命令并解析结果。
ls
2017 年更新 :
在 C++17 中,现在有一种列出文件系统文件的官方方法:std::filesystem.下面的Shreevardhan 提供了一个很好的答案,其中包含此源代码(此代码可能会抛出):
std::filesystem
#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!)。