一秒钟计时器

One-Second Timer

本文关键字:计时器 一秒钟      更新时间:2023-10-16

我需要一个每秒做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!)

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