C++如何遍历文件夹?

如何返回某个路径下所有文件(包括子文件夹中的文件)的文件名?采纳后再追加悬赏!!
2026年09月22日 06:09
有2个网友回答
网友(1):

标准C++目前并没有对文件系统的直接支持——世界上的文件系统千变万化,几乎无法搞出放之四海皆准的库


不过如果局限在 Windows 和 POSIX 兼容操作系统 这两类操作系统的话,难度就低多了。


Boost.Filesystem 库就提供了相关工具。这个库已经被标准化,即是 ISO/IEC TS 18822:2015 标准。最新版的 GCC 和 Visual Studio 部分支持这个库。


Filesystem 库的 recursive_directory_iterator 符合你的需求。

#include 
#include 
#include  // 如果是 boost 则改为 #include 

// 如果用的是 Boost.Filesystem 则下一行改成 namespace fs = boost::filesystem;
namespace fs = std::experimental::filesystem;
 
int main()
{
    for(fs::path p: fs::recursive_directory_iterator("路径"))
        std::cout << p.filename() << '\n';
}

网友(2):

首先编译器开C++17,头文件加filesystem
for(auto di : std::filesystem::recursive_directory_iterator(路径)){
if(di.is_regular_file())
std::filesystem::path 文件路径 = di.path();
......
}