C ++: отслеживание прошедшего времени - PullRequest
0 голосов
/ 29 апреля 2011

Я ищу способ узнать, сколько времени прошло с момента запуска моей программы, в любой момент времени. Этакий таймер, который будет работать, пока основной код делает все остальное, и его можно вызывать в любое время.

Контекст представляет собой приложение OpenGL в Windows, и, помимо того, что, зная, какие клавиши клавиатуры нажимаются (используя glutKeyboardFunc), я бы хотел знать , когда точно для каждой клавиши. нажата. Вся эта информация записывается в файл XML, который впоследствии будет использоваться для воспроизведения всего, что сделал пользователь. (вроде как функция воспроизведения в гоночной игре, но более простая).

Ответы [ 2 ]

7 голосов
/ 29 апреля 2011

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

Код взят из ru.cppreference.com и упрощен .

Старый ответ:
GetTickCount() in windows.h возвращает прошедшие тики (милисекунды). Когда ваше приложение запускается, вызывайте эту функцию и сохраняйте ее значение, а затем всякий раз, когда вам нужно узнать время, прошедшее с момента запуска вашей программы, снова вызывайте этот метод и вычитайте его значение из начального значения.

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

int elapsed = GetTickCount() - start; // This is elapsed time since start of your program
5 голосов
/ 29 апреля 2011

Для этого вам не нужен таймер, вы сохраняете метку времени при запуске приложения с помощью time(0).И вы делаете то же самое каждый раз, когда хотите измерить время, и вы можете просто установить init_time - current_time и вы получите промежуток времени.

...