C++17加入了std::experimental::filesystem,这使得C++进行文件操作大为方便(当然,之前boost也是有类似的filesystem的)。
使用std::experimental::filesystem::recursive_directory_iterator可以方便的递归获取一个目录下的文件。
#include <fstream>
#include <iostream>
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
int main()
{
std::string path("/your/dir/");
std::string ext(".sample");
for(auto& p: fs::recursive_directory_iterator(path))
{
if(p.path().extension() == ext())
std::cout << p << '\n';
}
return 0;
}