Fre*_*ios 0 c++ visual-studio-2015
由于filesystem存在于编译器的实验部分并将到达最新版本的 C++,如何从使用它的目录中列出与给定扩展名匹配的文件?
您可以std::experimental::filesystem::directory_iterator手动使用和过滤:
for(const auto& p : fs::directory_iterator("some_directory"))
{
if(p.path().extension() == ".txt")
{
/* ... */
}
}
Run Code Online (Sandbox Code Playgroud)
您可以创建一个不错的包装器,如下所示:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
可以这样使用:
for_files_with_extension("/home/someone/", ".txt",
[](const auto& p){ std::cout << "Found text file at " << p << "\n"; });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4466 次 |
| 最近记录: |