【发布时间】:2021-05-08 14:44:45
【问题描述】:
#include <iostream>
#include <thread>
#include <chrono>
using namespace std;
int main()
{
std::cout << "1";
std::this_thread::sleep_for( std::chrono::milliseconds(1000) );
std::cout << "2";
std::this_thread::sleep_for( std::chrono::milliseconds(1000) );
std::cout << "3";
std::this_thread::sleep_for( std::chrono::milliseconds(1000) );
return 1;
}
我希望每秒打印一次std::cout。
但是当我运行这段代码时,结果值123会同时打印出来。
为什么?
请告诉我如何解决它。
【问题讨论】:
-
缓冲,输出流有一个缓冲区,只有当它填满或者你用
std::flush或std::endl请求它时才写入。有一个选项可以关闭此行为,但它有利于 IO 性能。在您的情况下,请在您的打印语句后添加std::flush(std::cout)。