一秒计时器

时间:2013-05-30 19:53:40

标签: c++ macos timer counter

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

有关详细信息,this question的答案似乎更详细。