我需要一个每秒做X的计时器。 我做了这个,但是在程序终止之前它没有打印任何东西,我觉得很奇怪。 如果您将三个作为计数器,它会在三秒后打印所有内容,如果您选择了它,则会打印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;
}
答案 0 :(得分:2)
将<< flush
添加到要刷新的位置。即将您的打印输出更改为:
cout << counter-- << ", " << flush;
答案 1 :(得分:1)
endl
导致缓冲区'刷新'并写入stdout。您可以将<< endl;
添加到cout << counter--
,使用cout.flush();
手动刷新cout流,或将<< flush;
附加到cout
表达式的末尾(感谢@Rob) !)
有关详细信息,this question的答案似乎更详细。