Использование последнего добавленного файла с разрешением .jpg

Нужен код который вставляет в переменную адрес последнего добавленного файла в определенную папку с разрешением .jpg. Вожусь как обычно второй день - только после этого пишу сюда. На сайте майкрософта я ничего не понимаю, там какой-то синтаксис и т.д. У меня есть вот это "FindFirstFileExW" но я не знаю как это правильно реализовать, по этому прошу вас что бы вы мне показали как это делается. Т.е нужно что бы "это" брало адрес последнего добавленного файла в папку Downloads и передавало адрес этого файла в другую переменную. p.s надеюсь понятно обьяснил...


Ответы (2 шт):

Автор решения: Alexey Vesker

Решение, что называется "в лоб":

#include <iostream>
#include <vector>
#include <Windows.h>
#include <tchar.h>

int main()
{
    setlocale(LC_ALL, "ru-RU");
    std::vector<WIN32_FIND_DATA> findedFileData;
    WIN32_FIND_DATA fileData;
    ZeroMemory(&fileData, sizeof(WIN32_FIND_DATA));
    TCHAR fileMask[] = _TEXT("*.jpg");
    HANDLE hFile = FindFirstFile(fileMask, &fileData);
    findedFileData.push_back(fileData);
    while(FindNextFile(hFile,&fileData) == TRUE)
    {
        findedFileData.push_back(fileData);
    }
    FILETIME fileTime = findedFileData.at(0).ftCreationTime;
    int fileIndex = 0;
    for(int i =1;i<findedFileData.size();i++)
    {
        if (CompareFileTime(&fileTime, &findedFileData.at(i).ftCreationTime) > 0)
        {
            fileTime = findedFileData.at(i).ftCreationTime;
            fileIndex = i;
        }
    }       
    std::wcout << "Last file: " << std::wstring(findedFileData.at(fileIndex).cFileName).c_str() << std::endl;

    return 0;
}
→ Ссылка
Автор решения: Harry

Еще одно решение (впрочем, скорее, схема решения, чем готовое решение) "в лоб" :)

using namespace std;
using namespace std::filesystem;

path lastJpg(const char * dir)
{
    path last;
    file_time_type last_time;
    for(auto p: directory_iterator(dir))
    {
        if (p.path().extension() == ".jpg")
        {
            if (last == path() || last_time < p.last_write_time())
            {
                last = p.path();
                last_time = p.last_write_time();
            }
        }
    }
    return last;
}


int main(int argc, const char * argv[])
{
    cout << lastJpg(".") << endl;
}
→ Ссылка