我正在尝试在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";
我期望的结果是:
获得的结果:
我发现不确定的是,为什么程序打印到控制台直到执行完成而不是按预期每一秒?
干杯,
答案 0 :(得分:1)
您的问题是在循环期间未刷新输出流。实际上,将文本片段写入控制台有点贵。因此,输入被缓冲并且仅在发生刷新时写入控制台。刷新流可以通过流std::flush
:
cout << e<<std::flush;
除了添加换行符之外, std::endl
还会刷新流(写\n
可能也可以这样做,但这不能保证。)
作为旁注:您可能需要考虑在数字之间添加某种分隔符以使输出可读。