windows - C ++: holde styr på forløbet tid

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er på udkig efter en måde at kunne vide, hvor meget tid det har været siden mit program blev påbegyndt, til enhver tid. En slags timer, der fortsætter med at køre, mens hovedkoden gør alt andet, og det kan til enhver tid kaldes.


Konteksten er en OpenGL-applikation på Windows, og jeg vil gerne vide når præcis hver nøgle er ved at trykke på (ved hjælp af glutKeyboardFunc) Alle disse oplysninger er skrevet i en XML-fil, der senere vil blive brugt til at afspille alt, hvad brugeren gjorde. (En slags ligesom afspilningsfunktionen i et bilspil, men mere simpelt).

Bedste reference


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
";


Kode taget fra en.cppreference.com og forenklet . [6]


Gammelt svar:

GetTickCount() i windows.h returnerer flåter (milisekunder) forløbet.
Når din app starter, skal du ringe til denne funktion og gemme dens værdi, så når du har brug for at vide den forløbet tid siden programmet startede, skal du ringe til denne metode igen og trække dens værdi fra startværdien.


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

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

Andre referencer 1


Du behøver ikke en timer til dette, du gemmer tidsstemplet ved starten af ​​appen med time(0). Og du gør det samme hver gang du vil måle tiden, og du kan bare til init\_time - current\_time og dig 'Jeg får tiden til at falde.