1

我需要一个每秒执行 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;
}
4

2 回答 2

2

添加<< flush要冲洗的位置。即将您的打印输出更改为:

cout << counter-- << ", " << flush;

于 2013-05-30T20:02:23.190 回答
1

endl导致缓冲区“刷新”并写入标准输出。您可以添加<< endl;到您的 cout << counter--,使用 手动刷新 cout 流cout.flush();,或附加<< flush;cout表达式的末尾(感谢@Rob!)

有关更多信息, 这个问题的答案似乎更详细。

于 2013-05-30T19:56:29.207 回答