由于filesystem
存在于编译器的实验部分并且将到达最新版本的C ++,如何使用它从列表中列出与给定扩展名匹配的文件?
答案 0 :(得分:3)
您可以使用std::experimental::filesystem::directory_iterator
并手动过滤:
for(const auto& p : fs::directory_iterator("some_directory"))
{
if(p.path().extension() == ".txt")
{
/* ... */
}
}
您可以按如下方式创建一个漂亮的包装器:
template <typename TF>
void for_files_with_extension(std::string_view dir, std::string_view ext, TF&& f)
{
for(const auto& p : fs::directory_iterator(dir))
{
if(p.path().extension() == ext)
{
f(p);
}
}
}
可以这样使用:
for_files_with_extension("/home/someone/", ".txt",
[](const auto& p){ std::cout << "Found text file at " << p << "\n"; });