我需要一个每秒做X的计时器。我做了这个,但是它不打印任何东西,直到程序终止,我发现这很奇怪。如果你选择3作为计数器,它会在3秒后打印所有内容,如果你选择3,它会在100秒后打印所有内容。
如何使它每秒打印,而不是在结束时一次打印?
int main()
{
using namespace std;
//Number to count down from
int counter = 10;
//When changed, a second has passed
int second = (unsigned)time(NULL);
//If not equal to each other, counter is printed
int second_timer = second;
while (counter > 0) {
second = (unsigned)time(NULL);
while (second != second_timer) {
//Do something
cout << counter-- << ", ";
//New value is assigned to match the current second
second_timer = second;
}
}
cout << "0" << endl;
return 0;
}
在要冲洗的位置添加<< flush
。例如,将打印输出更改为:
cout << counter-- << ", " << flush;
endl
导致缓冲区'刷新'并写入标准输出。您可以将<< endl;
添加到cout << counter--
中,使用cout.flush();
手动刷新cout流,或将<< flush;
附加到cout
表达式的末尾(感谢@Rob!)
关于更多信息,这个问题的答案似乎更详细。