我如何在 windows 上根据 C++ 中的修改时间读取目录中的文件

how do i read files in a directory according to their modification time in c++ on windows

目前我正在使用dirent.h来迭代访问目录及其子目录中的文件。它根据文件名(按字母顺序)访问它们。出于某种原因,我想根据修改时间访问子目录和文件(最后访问最新修改的文​​件)。可以这样做吗?

我想首先遍历目录并根据文件的修改时间创建一个排序的文件列表,然后使用此列表相应地读取它们。但我希望有更好的方法。

根据我的初步想法和评论中的建议。

#include<dirent.h>

typedef struct files {
long long mtime;
string file_path;
bool operator<(const files &rhs)const {
    return mtime < rhs.mtime;
}
}files;

using namespace std;
vector<struct files> files_list;

    void build_files_list(const char *path)  {
    struct dirent *entry;
    DIR *dp;
    if (dp = opendir(path)) {
        struct _stat64 buf;
        while ((entry = readdir(dp))){
            std::string p(path);
            p += "\";
            p += entry->d_name;
            if (!_stat64(p.c_str(), &buf)){
                if (S_ISREG(buf.st_mode)){
                    files new_file;
                    new_file.mtime = buf.st_mtime;
                    new_file.file_path = entry->d_name;
                    files.push_back(new_file);
                }

            if (S_ISDIR(buf.st_mode) &&
                // the following is to ensure we do not dive into directories "." and ".."
                strcmp(entry->d_name, ".") && strcmp(entry->d_name, "..")){
                //do nothing
            }
        }
    }
    closedir(dp);
   }
   else{
       printf_s("\n\tERROR in openning dir %s\n\n\tPlease enter a correct 
        directory", path);
   }
}

void main(){
    char *dir_path="dir_path";
    build_files_list(dir_path);
    sort(files_list.begin(), files_list.end());
    //the rest of things to do
}