1
我在我的程序中使用了std::chrono::system_clock::time_point
。 当应用程序停止时,我想将文件保存到time_point
中,并在应用程序启动时再次加载。在应用程序外部存储time_point
如果这是一个UNIX时间戳,我可以简单地将该值存储为整数。有没有类似的方式来存储time_point
?
我在我的程序中使用了std::chrono::system_clock::time_point
。 当应用程序停止时,我想将文件保存到time_point
中,并在应用程序启动时再次加载。在应用程序外部存储time_point
如果这是一个UNIX时间戳,我可以简单地将该值存储为整数。有没有类似的方式来存储time_point
?
是的。选择您想要的时间戳精度(秒,毫秒,...纳秒)。再铸造system_clock::time_point
到精度,提取其数字值,并且将其打印:虽然未由标准规定
cout << time_point_cast<seconds>(system_clock::now()).time_since_epoch().count();
,上面的行(事实上)便携地输出自1970-的非闰年的秒数01-01 00:00:00 UTC。也就是说,这是一个UNIX-Timestamp。
我试图获得上述标准所祝福的代码,以实现今天所有实现所做的事情。而且我有std :: chrono执行者的非官方保证,他们在此期间不会改变他们的system_clock
时代。
下面是一个完整往返例如:
#include <chrono>
#include <iostream>
#include <sstream>
int
main()
{
using namespace std;
using namespace std::chrono;
stringstream io;
io << time_point_cast<seconds>(system_clock::now()).time_since_epoch().count();
int64_t i;
system_clock::time_point tp;
io >> i;
if (!io.fail())
tp = system_clock::time_point{seconds{i}};
}
谢谢,我会检查它的明天! – Bobface
我该如何将时间戳重新转换为'time_point'? – Bobface
@Bobface:已更新。 –