【发布时间】:2019-09-09 16:30:39
【问题描述】:
我制作了一个函数,它使用 C++ filesystem 模块来获取给定文件的最后修改时间,并将其转换为 std::string。
std::string Helper::lastWriteTime(const std::string& itemName)
{
std::filesystem::path file(itemName);
auto time = std::filesystem::last_write_time(file);
std::time_t cftime = decltype(time)::clock::to_time_t(time);
return std::to_string(cftime);
}
但是,现在我想使用此字符串并将其用作另一种方法的参数 - 该方法转换字符串并根据字符串表示更改上次修改时间。倒序的方法不起作用,有没有办法实现?
为了接收文件的最后修改时间,我使用函数 std::filesystem::last_write_time,它适用于数据类型 std::filesystem::file_time_type。
背景:需要字符串解释,因为我通过网络发送这些数据,然后在收到这个时间后我使用它并更改另一个文件的最后修改时间,以便它们具有相同的时间。
lastWriteTime 方法的示例输出: 1568045082
【问题讨论】:
-
问题是——如何将包含整数的字符串转换为
file_time_type? -
基本上,是的。我的问题标题不合适吗?我认为这种方式更好,但可以改变它。
-
您不能移植的可能性很大,因为您示例中的变量
time是一些特定于实现的计时时间点,如果没有类型信息,那将很难回来。 -
特别是如果您尝试在不同的系统上进行重建。
-
在 C++20 中使用时钟转换和
to_stream/from_stream支持会更容易。
标签: c++ filesystems c++17