首先,我要说的是,我昨天才刚开始使用该库,因此我对它的理解仍然是相当基础的。我正在尝试捕获正在创建的视觉处理程序的FPS,并使用chrono库将其输出到屏幕。在我的情况下,我需要将开始steady_clock之后所花费的时间转换为双精度(或其他一些我可以当作双精度数值的typedef)。我浏览了参考文档,并尝试使用了duration_cast和time_point_cast函数,但这些都不是我想要的。

我的问题是;有什么方法可以将以秒为单位的时钟当前状态的数值简单地转换为原始数据类型?

任何帮助,将不胜感激。

最佳答案

像这样:

#include <chrono>
#include <iostream>
#include <thread>

int main()
{
  using namespace std::literals;

  // measure time now
  auto start = std::chrono::system_clock::now();

  // wait some time
  std::this_thread::sleep_for(1s);

  // measure time again
  auto end = std::chrono::system_clock::now();

  // define a double-precision representation of seconds
  using fsecs = std::chrono::duration<double, std::chrono::seconds::period>;

  // convert from clock's duration type
  auto as_fseconds = std::chrono::duration_cast<fsecs>(end - start);

  // display as decimal seconds
  std::cout << "duration was " << as_fseconds.count() << "s\n";
}


示例输出:

duration was 1.00006s

关于c++ - 如何从steady_clock返回耗时作为原始数据类型( double ),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39812165/

10-11 23:22