我正在寻找一种方法,能够知道自我的程序启动以来在任何给定时间已经有多少时间。一种计时器,当主代码执行其他所有操作时,它将继续运行,并且可以随时调用。
上下文是Windows上的OpenGL应用程序,并且知道正在按下哪些键盘键(使用glutKeyboardFunc),我想知道 何时 按下每个键。所有这些信息都写入一个XML文件,稍后将用于重放用户所做的一切。 (有点像赛车游戏中的重播功能,但更简单)。
答案 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,你就会得到时间流逝。