3

我编写了一个示例函数来了解std::chrono::duration最近作为 C++11 标准的一部分引入的行为。

void exampleForDuration()
{
    seconds Sec(minutes(1));

    cout<<"1 second is "<<duration_cast<nanoseconds>(seconds(1)).count()<<" nanoseconds"<<endl;
    cout<<"1 minute is "<<Sec.count()<<" seconds"<<endl;
    cout<<"1 second is "<<duration_cast<duration<int,centi>>(seconds(1)).count()<<" centiseconds"<<endl;
    cout<<"100 second is "<<duration_cast<minutes>(seconds(100)).count()<<" minute."<<endl;
    cout<<"Waiting for 10 seconds...";
    auto start=system_clock::now();
    this_thread::sleep_for(seconds(10));
    cout<<"Done."<<endl;
    auto end=system_clock::now();
    auto waitedFor=end-start;
    cout<<"Waited for "<<duration_cast<seconds>(waitedFor).count()<<" seconds"<<endl;
    printCurrentDateTime();
}

输出:

1 second is 1000000000 nanoseconds
1 minute is 60 seconds
1 second is 100 centiseconds
100 second is 1 minute.                -------> 1)
Waiting for 10 seconds...Done.         -------> 2)
Waited for 10 seconds

当我运行上述函数时,程序在打印 1) 之后等待了 10 秒,而不是在打印 2) 之后等待了 10 秒。我希望程序在打印“Waiting for 10 seconds...”后等待,然后等待,然后打印“Done”。但它打印“100 秒是 1 分钟”。然后等待 10 秒,然后是其余的输出。

4

1 回答 1

10

如果您更改它是否可以正常工作

cout<<"Waiting for 10 seconds...";

cout<<"Waiting for 10 seconds..." << endl;

可能是它没有冲洗,所以它还没有打印那行。

于 2012-08-26T10:31:18.347 回答