我似乎无法在 gcc for Linux 上找到 _findfirst / findfirst、_findnext / findnext API,如果它包含在那里,我实际上宁愿使用标准模板库 (STL)。
有谁知道有哪些 API 可用于在 Linux for C++ (gcc) 下列出目录中的文件?
它不是 C++ 风格的 API,但您找不到的 API(DOS/Windows 风格的 findfirst/findnext 的 Linux/Unix 对应)是 opendir/readdir/closedir。
使用 opendir/readdir/closedir 的主要优点是您不需要任何额外的库(它是您已经在使用的 C 库的一部分)。实际上,Boost 文件系统库使用 opendir/readdir/closedir 来获取目录中的文件列表。
参考:
STL 还没有列出目录中文件的功能。但它确实具有打开您已经知道的文件的功能。
除了 Boost.Filesystem,还有STLSoft
从 C++17 开始,标准库包含std::filesystem
其源代码在Boost.Filesystem
. 现在std::filesystem::directory_iterator
是显而易见的选择,因为它独立于平台,提供比_findfirst
/ findnext
/ opendir
/ readdir
/更好的抽象closedir
并且不引入任何依赖项。如果您不能使用符合 C++17 的编译器,请暂时使用 Boost,稍后再切换。