10

我似乎无法在 gcc for Linux 上找到 _findfirst / findfirst、_findnext / findnext API,如果它包含在那里,我实际上宁愿使用标准模板库 (STL)。

有谁知道有哪些 API 可用于在 Linux for C++ (gcc) 下列出目录中的文件?

4

4 回答 4

13

它不是 C++ 风格的 API,但您找不到的 API(DOS/Windows 风格的 findfirst/findnext 的 Linux/Unix 对应)是 opendir/readdir/closedir。

使用 opendir/readdir/closedir 的主要优点是您不需要任何额外的库(它是您已经在使用的 C 库的一部分)。实际上,Boost 文件系统库使用 opendir/readdir/closedir 来获取目录中的文件列表。

参考:

于 2008-10-24T22:57:07.497 回答
10

查看Boost.Filesystem库。

特别是basic_directory_iterator

于 2008-10-24T22:23:54.443 回答
1

STL 还没有列出目录中文件的功能。但它确实具有打开您已经知道的文件的功能。

除了 Boost.Filesystem,还有STLSoft

于 2008-10-24T22:27:36.543 回答
1

从 C++17 开始,标准库包含std::filesystem其源代码在Boost.Filesystem. 现在std::filesystem::directory_iterator是显而易见的选择,因为它独立于平台,提供比_findfirst/ findnext/ opendir/ readdir/更好的抽象closedir并且不引入任何依赖项。如果您不能使用符合 C++17 的编译器,请暂时使用 Boost,稍后再切换。

于 2021-08-16T07:10:21.397 回答