我似乎在Linux的gcc上找不到_findfirst / findfirst, _findnext / findnext API,如果STL包含这些API,我宁愿使用STL。
有人知道在Linux下使用C++ (gcc)列出目录中文件的可用API吗?
这并不是C++风格的API,但是你没有找到的API(类似于DOS/Windows-style findfirst/findnext在Linux/Unix下的对应物)是opendir/readdir/closedir。
使用opendir/readdir/closedir的主要优点是您不需要任何额外的库(它是C库的一部分,您已经在使用它了)。实际上,Boost文件系统库使用opendir/readdir/closedir获取目录中的文件列表。
参考文献:
std::filesystem
,其源代码来自 Boost.Filesystem
。如今,std::filesystem::directory_iterator
是显而易见的选择,因为它是跨平台的,比 _findfirst
/findnext
/opendir
/readdir
/closedir
提供更好的抽象,并且不会引入任何依赖项。如果您无法使用符合 C++17 标准的编译器,请暂时使用 Boost,然后再切换到 std::filesystem。