在Windows上使用C ++获取文件属性更改时间

时间:2018-02-09 12:46:13

标签: c++ windows filesystems stat

我需要使用cpp在Windows中使用modification timecreation timechange time文件。我使用以下代码:

string filename = "D:\\hi.txt";
struct stat result;
if (stat(filename.c_str(), &result) == 0)
{
    int a = 10;
    auto mod_time = result.st_mtime;
    cout << "modified time is: "<<mod_time<<endl;
}

使用此功能,我可以获得modificationcreation time。但是,我无法获得该文件change time。我应该如何使用cpp获取change time文件?

&#34;更改时间的定义&#34;如下:

  

当文件内容发生变化时,修改时间会发生变化   即使文件的属性发生变化,更改时间也会发生变化   访问权限。

1 个答案:

答案 0 :(得分:0)

MSDN为文件定义了三个时间戳:创建时间,上次访问时间,上次写入时间。您要求的内容实际上是最后访问时间。

在您的示例中,您使用Libc函数stat(),该函数适用于具有C编译器的所有系统。实际上,它可能过于通用,即它不代表特定环境(在您的情况下为MS Windows)中可用的所有功能,只是通用属性的子集。

在此link,您可以找到返回Windows上支持的文件时间的GetFileTime() WinAPI函数的说明。如果您编写的应用程序并不打算移植到其他平台,那么最好将WinAPI用于系统级别的事情。