تو c++11 به صورت زیر:
template<typename T>
void getFiles_(const path &folder, std::vector<T> &files, const std::vector<T> &filter) {
directory_iterator end_dir;
for (directory_iterator it(folder); it != end_dir; it++) {
if (it->status().type() == filesystem::file_type::directory_file)
getFiles_(it->path(), files, filter);
else if (it->status().type() == filesystem::file_type::regular_file) {
path cur_path = it->path();
auto cur_ext = cur_path.extension().string();
auto pos = std::find_if(filter.begin(), filter.end(), [&cur_ext](const string &item) { return cur_ext == item; });
if (pos != filter.end())
files.push_back(cur_path.wstring());
}
}
}
فیلتر برای این هستش که شما بتونید فایل ها با پسوند های خاصی را برگردانید می تونید آ« را حذف کنید تا همه و فایل ها و فلدرها لیست شود.