【问题标题】:C++: keeping track of elapsed timeC ++:跟踪经过的时间
【发布时间】:2011-04-29 08:54:12
【问题描述】:

我正在寻找一种方法,能够在任何给定时间了解自从我的程序启动以来已经过了多少时间。一种计时器,它会在主代码执行其他所有操作时继续运行,并且可以随时调用。

上下文是 Windows 上的 OpenGL 应用程序,除了知道正在按下哪些键盘键(使用 glutKeyboardFunc),我还想知道 何时每个键都被按下。所有这些信息都被写入一个 XML 文件,该文件稍后将用于重播用户所做的一切。 (有点像赛车游戏中的回放功能,但更简单)。

【问题讨论】:

  • 现在是 2017 年,std::chrono 自 C++11 以来一直存在。

标签: c++ windows opengl glut


【解决方案1】:

C++ 11:

#include <iostream>
#include <chrono>

auto start = std::chrono::system_clock::now();
auto end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds = end - start;
std::cout << "elapsed time: " << elapsed_seconds.count() << "s\n";

代码取自 en.cppreference.com 并经过简化。

旧答案:
windows.h 中的GetTickCount() 返回经过的滴答声(毫秒)。 当您的应用启动时,调用此函数并存储其值,然后当您需要知道自程序启动以来经过的时间时,再次调用此方法并从开始值中减去其值。

int start = GetTickCount(); // At Program Start

int elapsed = GetTickCount() - start; // This is elapsed time since start of your program

【讨论】:

    【解决方案2】:

    您不需要为此设置计时器,您可以在应用程序启动时使用time(0) 保存时间戳。每次你想测量时间时你都做同样的事情,你可以只用 init_time - current_time ,你就会得到时间流逝。

    【讨论】:

    • 我猜这和@AtoMerZ的答案差不多
    猜你喜欢
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多