标准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';
}
首先编译器开C++17,头文件加filesystem
for(auto di : std::filesystem::recursive_directory_iterator(路径)){
if(di.is_regular_file())
std::filesystem::path 文件路径 = di.path();
......
}