我正在尝试一些 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/