C ++ Timer实现

时间:2012-12-11 21:58:09

标签: c++ timer clock

我正在尝试在C ++中实现一个“计时器”功能,以便程序在几秒钟后执行某些事情。 但是,我得到了意想不到的结果。

short e, sum;
clock_t start;
double duration=0;

for (e=0; e<4; e++) {
    start = clock();
    while (duration < 1) {

        duration = (clock() - start)/(double)CLOCKS_PER_SEC;
    }
    cout << duration;
    duration = 0;
    sum += e;
    /* Calculate EPOCH error */
    cout << e;
}
cout << "\n" << e<< "\n";

我期望的结果是:

  • 每秒控制台输出,然后是e(0,1,2,3)
  • 在执行结束时我期望总和为0 + 1 + 2 + 3 = 6,

获得的结果:

  • 控制台输出后跟e,执行完成时一起
  • sum = 6

我发现不确定的是,为什么程序打印到控制台直到执行完成而不是按预期每一秒?

干杯,

1 个答案:

答案 0 :(得分:1)

您的问题是在循环期间未刷新输出流。实际上,将文本片段写入控制台有点贵。因此,输入被缓冲并且仅在发生刷新时写入控制台。刷新流可以通过流std::flush

来完成
    cout << e<<std::flush;
除了添加换行符之外,

std::endl还会刷新流(写\n 可能也可以这样做,但这不能保证。)

作为旁注:您可能需要考虑在数字之间添加某种分隔符以使输出可读。