下面的程序一次打印1 2 3 4 5
。这意味着打印输出没有时间延迟。
#include<iostream>
#include<stdio.h>
#include <thread>
using namespace std;
int main()
{
for(int i = 1; i <= 5; ++i)
{
cout << i << " ";
// Function to sleep the thread
this_thread::sleep_for(500ms);
}
return 0;
}
但是这个程序会打印
1
2
3
4
5
一个接一个,这意味着我得到的输出有0.5秒的时间延迟。
#include<iostream>
#include<stdio.h>
#include <thread>
using namespace std;
int main()
{
for(int i = 1; i <= 5; ++i)
{
cout << i << "\n";
// Function to sleep thread
// for 0.5 sec
this_thread::sleep_for(500ms);
}
return 0;
}
在上述两个方案中究竟发生了什么?
注意:在线编译器中看不到两个输出的区别,因为它们显示的是程序终止后的结果。
3条答案
按热度按时间sxpgvts31#
输出可以是行缓冲的,在这种情况下,只有完整的行被发送到底层输出设备。
myzjeezk2#
我能够得到所需的输出,一次显示一个元素,延迟0.5秒。使用visual studio 2015。
我建议你避免在线编译器。
它们通常在文本框中给予一次完整的输出。
luaexgnf3#
"\n"
使输出转到下一行。它是换行符。