【发布时间】:2018-09-07 11:03:34
【问题描述】:
说明
以这个基本代码为例。
#include <iostream>
#include <thread>
int main(int argc, const char * argv[]) {
while(true){
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
std::cout << "loop";
}
}
当我在 XCode 中运行它时,它完全按预期工作。它每秒打印出来,“循环”。但是,当我在终端中运行它时,什么也没有发生。代码似乎正在“运行”,但没有任何内容打印到屏幕上。
问题:
为什么std::this_thread::sleep_for() 可以在 XCode 终端上工作,而不能在标准的 MacOS 终端上工作?
【问题讨论】:
-
因为“终端”会缓冲您的
stdout,而 Xcode 会立即刷新它。要么自己刷新标准输出,要么在末尾添加std::endl隐式执行 -
@JustSid:请在答案部分回答。
-
@Bathsheba 发表评论后,我正在写一个完整的答案。我已将其中的部分内容纳入社区 wiki 答案