【发布时间】:2020-04-06 04:16:36
【问题描述】:
我从here 了解到,如果我要在不刷新缓冲区的情况下输出字符(使用 endl 或 cin ),它们在程序结束之前不会出现在我的控制台上。
所以我尝试做一个无限循环:
for(;;)
{
std::cout << "a" << std::endl;
}
同样不刷新缓冲区:
for(;;)
{
std::cout << "a";
}
它们都永远输出a,我能观察到的唯一区别是后一个版本的代码在开始输出字母之前有一些延迟时间。第一个立即开始。
我希望第二个只有在循环中有 break 时才输出字符,并且程序将被终止。
【问题讨论】:
-
不,它会在刷新之前填满缓冲区。缓冲区的大小不是无限的。
-
“在程序结束之前它们不会出现在我的控制台上” - 或者直到缓冲区已满..