如何使用cpp文件系统在目录中查找最新文件

时间:2019-05-28 20:23:53

标签: c++ filesystems c++17

我正在尝试在日志目录中获取最新文件。我正在使用c ++和filesystem库。

我尝试使用directory_iterator中的experimental/filesystem对目录中的每个文件进行迭代,并使用std::max_element比较每个文件的last_write_time以使更大的一个。

namespace fs = std::experimental::filesystem;
auto dir_it = fs::directory_iterator(my_path);
auto path = *std::max_element(fs::begin(dir_it), fs::end(dir_it), [](const fs::directory_entry& f1, const fs::directory_entry& f2){
  return fs::last_write_time(f1.path()) < fs::last_write_time(f2.path());
});

我希望得到一个fs::directory_entry对象,但是当我打印路径时,它是空的。 因此,我研究了函数内部的比较元素,以及每一步f1.path() == f2.path(),因此输出是可以理解的,但我没有弄清楚为什么compare function不起作用。

1 个答案:

答案 0 :(得分:1)

max_element需要前向迭代器,而directory_iterator input 迭代器。

因此,如果您想以这种方式进行操作,则需要从迭代器创建一个容器,或者自己手动编写一个循环。