Как найти самый последний файл в каталоге, используя файловую систему cpp - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь получить самый последний файл в каталоге журналов. Я использую библиотеку 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(), поэтому вывод понятен, но я не понял, почему функция сравнения не работает.

1 Ответ

1 голос
/ 28 мая 2019

max_element требуется прямой итератор, в то время как directory_iterator является input итератором.

Так что если вы хотите сделать что-то таким образом, вам нужно либо создатьКонтейнер из итераторов, или вручную написать цикл.

...