如何在使用c ++创建的测验程序中插入倒数计时器?

时间:2011-08-14 11:47:10

标签: c++

所有带有5个标记的10个问题都需要及时回答。所以应该显示每个问题剩余时间所消耗的时间。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

便携式C ++解决方案是使用chrono::steady_clock来衡量时间。这在标题<chrono>中的C ++ 11中可用,但可能在<tr1/chrono>boost.chrono中的TR1中的旧编译器中可用。

稳定时钟始终以“尽可能均匀”的速率前进,这是多任务多线程平台的重要考虑因素。稳定的时钟也独立于任何类型的“挂钟”,如系统时钟(可以随时任意操作)。

(注意:如果您的实施中没有steady_clock,请查找monotonic_clock。)


<chrono>类型有点繁琐,所以这里有一段代码示例,它返回一个稳定的时间戳(或者更确切地说,是你喜欢的时钟的时间戳,例如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

用法:

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

答案 1 :(得分:2)

使用time()

这有Kerrek在他的回答中指出的限制。但它的使用也非常简单。