开发者

How to insert a countdown timer in a quiz program that is created using c++?

开发者 https://www.devze.com 2023-03-28 04:40 出处:网络
All 开发者_如何学Gothe 10 questions with 5 marks need to be answered within time. so the time consumed for each question n remaining time should be displayed. can anybody help?A portable C++ solution

All 开发者_如何学Gothe 10 questions with 5 marks need to be answered within time. so the time consumed for each question n remaining time should be displayed. can anybody help?


A portable C++ solution would be to use chrono::steady_clock to measure time. This is available in C++11 in the header <chrono>, but may well be available to older compilers in TR1 in <tr1/chrono> or boost.chrono.

The steady clock always advances at a rate "as uniform as possible", which is an important consideration on a multi-tasking multi-threaded platform. The steady clock is also independent of any sort of "wall clock", like the system clock (which may be arbitrarily manipulated at any time).

(Note: if steady_clock isn't in your implementation, look for monotonic_clock.)


The <chrono> types are a bit fiddly to use, so here is a sample piece of code that returns a steady timestamp (or rather, a timestamp from whichever clock you like, e.g. the high_resolution_clock):

template <typename Clock>
long long int clockTick(int multiple = 1000)
{
  typedef typename Clock::period period;
  return (Clock::now().time_since_epoch().count() * period::num * multiple) / period::den;
}

typedef std::chrono::monotonic_clock myclock;  // old
typedef std::chrono::steady_clock yourclock;   // C++11

Usage:

long long int timestamp_ms = clockTick<myclock>();         // milliseconds by default
long long int timestamp_s  = clockTick<yourclock>(1);      // seconds
long long int timestamp_us = clockTick<myclock>(1000000);  // microseconds


Use time().

This has the limitation that Kerrek has pointed out in his answer. But it's also very simple to use.

0

精彩评论

暂无评论...
验证码 换一张
取 消