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; }