c++ - 这个程序为什么要等 10 秒而不是倒计时?

标签 c++ c++11 c++-chrono

我正在尝试一些 c++11 代码,我试图编写一个从 10 开始倒数的程序,在输出之间休眠。这是我到目前为止所拥有的:

#include <iostream>
using namespace std;

#include <chrono>
#include <thread>

void Sleep(int x)
{
        std::this_thread::sleep_for(std::chrono::duration<int>(x));
}

int main()
{
    for (int x=10; x>0; x--) {
            cout << x << "...";
            Sleep(1);
    }

    cout << " FIRE!!\n";
}

问题是,这段代码等待 10 秒,然后打印所有输出,而不是从 10 开始倒数。这是怎么回事?我该如何解决?

(顺便说一句,我在运行 Linux Mint 17 和 MacOSX 10.9 的计算机上进行了尝试,两次都得到了相同的结果)

最佳答案

可能是因为您没有刷新输出。试试这个

cout << x << "..." << flush;

流输出可以被缓冲,这意味着结果并不总是立即出现。刷新至少会增加您立即看到一些输出的机会。

关于c++ - 这个程序为什么要等 10 秒而不是倒计时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32384968/

相关文章:

c++ - 如何比较 char 变量(c 字符串)?

c++ - 如何使用 std::vector 防止内存重新分配

c++ - 问题 C1083 : cannot open include file: 'chrono' : no such file or directory pops out

c++ - 为什么 `std::chrono::weekday` 允许但不保留有效范围之外的值?

c++ - 为什么代码中会发生溢出(-2147483648)?

c++ - 双继承类型推导

c++ - 非模板类型参数

c++ - 为什么以及何时应该使用 IPC_NEW 创建信号量?

c++ - vector (具有 vector 的结构)

c++ - 如何将 utf16 ushort 数组转换为 utf8 std::string?