C ++:跟踪已用时间

时间:2011-04-29 08:54:12

标签: c++ windows opengl glut

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

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

2 个答案:

答案 0 :(得分:7)

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和简化获取的代码。

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

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

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

答案 1 :(得分:5)

您不需要计时器,您可以使用time(0)保存应用程序启动时的时间戳。而且每次你​​想要测量时间时都会这样做,你只需要init_time - current_time,你就会得到时间流逝。