如何在c++17中将std::filesystem::file_time_type转换为FILETIME形式?

问题描述 投票:0回答:1

如何在c++17中将std::filesystem::file_time_type转换为FILETIME形式?

我期待获得代码示例/片段,将 std::filesystem::file_time_type 的变量转换为 c++17/c++11 中 FILETIME 类型的结构。

c++17 filesystems c++-chrono
1个回答
0
投票
#include <Windows.h>

#include <chrono>
#include <filesystem>

FILETIME
file_clock_to_FILETIME(std::filesystem::file_time_type tp)
{
    const uint64_t rawCount = tp.time_since_epoch().count();
    FILETIME result;
    result.dwLowDateTime = static_cast<DWORD>(rawCount);
    result.dwHighDateTime = static_cast<DWORD>(rawCount >> 32);
    return result;
}

演示。

这是有效的,因为

file_time_type
FILETIME
共享相同的纪元和精度。因此,只需提取 64 位整数类型并将其填充到
FILETIME
数据结构中即可。

© www.soinside.com 2019 - 2024. All rights reserved.