在二进制文件中保存并加载boost :: chrono :: steady_clock :: time_point

时间:2014-01-04 11:51:19

标签: c++ boost

我需要保存boost::chrono::steady_clock::time_point类型的变量 到文件中,然后从文件中检索它。 时间格式化并不重要,我希望将其保存为double。 这可能吗?

2 个答案:

答案 0 :(得分:1)

稳定时钟将持续时间定义为nanosecondshere

这种情况使用至少64位作为其表示。

typedef duration<boost::int_least64_t, nano> nanoseconds; 

所以你可以序列化持续时间的表示。在反序列化时,你必须将其转换回时钟的时间点类型。

在元级别上,当反序列化时,时间点将不会“匹配”当前稳定的时钟源(因为它可能在不同的进程中,在重新启动后,即使在不同的计算机上)。所以你可以考虑一下

  • 定义您自己的专用时钟(如:archive_clock)
  • 只存储纳秒值,文档描述其相关性及其与挂钟时间的关系(缺席)等。

答案 1 :(得分:1)

您可以使用time_point::time_since_epoch()成员函数获取内部值以进行保存。 您可以使用time_point(duration)构造函数加载时间。