gpt4 book ai didi

C++11如何打印出高分辨率时钟time_point

转载 作者:IT老高 更新时间:2023-10-28 23:15:08 30 4
gpt4 key购买 nike

从high_resolution_clock获取time_point时如何打印出time_point?

timestamp = std::chrono::high_resolution_clock::now();
std::time_t now = std::chrono::system_clock::to_time_t(timestamp);
std::cout << std::ctime(&now) << std::endl;

我在编译时收到以下错误消息:

error: no viable conversion from 'time_point<class std::__1::chrono::steady_clock, duration<[...], ratio<[...], 1000000000>>>' to 'const time_point<class std::__1::chrono::system_clock, duration<[...], ratio<[...], 1000000>>>'
time_t tt = std::chrono::system_clock::to_time_t(timestamp);

最佳答案

没有真正优雅的方法可以做到这一点。 high_resolution_clock 与 UTC 或任何其他日历无关。您可以便携地做的一件事是从其未指定的时期输出其当前持续时间,以及该持续时间的单位:

#include <chrono>
#include <iostream>

int
main()
{
using Clock = std::chrono::high_resolution_clock;
constexpr auto num = Clock::period::num;
constexpr auto den = Clock::period::den;
std::cout << Clock::now().time_since_epoch().count()
<< " [" << num << '/' << den << "] units since epoch\n";
}

对我来说输出:

516583779589531 [1/1000000000] units since epoch

这意味着它是 516583779589531 纳秒(或 516,583.779589531 秒),因为我的机器上的这个时钟的纪元。在我的机器上,这意味着:我的机器已经启动了将近 6 天。但这种翻译是不可移植的。

啊!我从您的错误消息中注意到您正在使用 libc++ .如果您也在 OS X 上,那么我们对 high_resolution_clock 的定义相同:它从您的计算机启动开始计算纳秒。

关于C++11如何打印出高分辨率时钟time_point,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26128035/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com