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

标签 c++ filesystems c++17

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

我尝试使用 experimental/filesystem 中的 directory_iterator 迭代目录中的每个文件,并使用 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(),所以输出是可以理解的,但我没有弄清楚为什么比较功能不起作用。

最佳答案

max_element 需要一个前向迭代器,而 directory_iterator 是一个输入迭代器。

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

关于c++ - 如何使用 cpp 文件系统在目录中查找最新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56349590/

相关文章:

c++ - 函数模板推导指南?

c++ - 使用 QtConcurrent 加载 Pixmap 并绘制它

python - 如何通过 Python 查找与 Windows 文件关联的图标?

c++ - 给定数字列表有多少种方法可以得到 21?如何获得所有可能的数字组合?

regex - 匹配 VMS 文件名的正确正则表达式模式是什么?

javascript - 单击我网站上的文本框时显示 'My Computer'

c++ - 可移植地支持宽松的循环范围

c++ - 在 C++17 中使用空列表初始化构造函数时出现编译错误

C++ SFML 不同类之间的碰撞检测

c++ - 如何在 C++ 中正确创建加密?