c++ - C++ 11 std::chrono::duration 示例

标签 c++ c++11 duration

我编写了一个示例函数来理解 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 秒...”后等待,然后等待,然后打印“完成”。但它打印出“100 秒是 1 分钟”。然后等待 10 秒,然后输出其余部分。

最佳答案

如果你改变它是否正常工作

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

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

可能是它没有刷新,所以它还没有打印那行。

关于c++ - C++ 11 std::chrono::duration 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12129296/

相关文章:

c++ - Visual Studio 2015 中的 Lua 5.3

c++ - 模板中的参数值 (C++) : can be specified at runtime?

c++ - 每行有两个数字的大型输入文本文件,如何更快地输入?

c++ - 使用树的序列化和为每个子树生成唯一 ID 进行树匹配

c++ - 有没有一种方法可以编写一个宏来仅使用变量名(即等同于 std::forward<T>(t) 的 FWD(t))进行完美转发?

C++ 参数类型和效率

c++ - 如何获得两种不同类型相乘的结果类型?

android - 将 Android Toast 持续时间设置得非常长(例如 1 分钟)

java - 从现在开始持续时间是多少天?

language-agnostic - 哪些图书馆可以正确计算秒数以及哪些日期?