我正在从维基百科阅读以下example。
#include <iostream>
int main()
{
std::cout << "Hello, world!\n";
return 0;
}
该文章的内容如下:
这个程序将输出&#34; Hello,world!&#34;接着是换行符 标准输出流缓冲区刷新。
我不相信这是正确的,因为std::flush
上不需要'\n'
。
我应该继续编辑文章,将'\n'
更改为std::endl
吗?
答案 0 :(得分:4)
不,程序正常终止时会刷新标准输出。 (如果一个简单的&#34; Hello,world&#34;程序异常终止,那么你可能做的事情并不多。)你可能想澄清这一点(冲洗发生在程序结束时,而不是std::cout << ...
调用。
return 0;
是不必要的(但无害)。
答案 1 :(得分:2)
默认情况下,cout
流与C库的stdout
流同步(即它们将共享相同的缓冲区)。并且C标准指定在写入交互式设备时stdout
将是行缓冲或无缓冲的。
这意味着默认情况下,如果输出是交互式设备(如控制台),cout
将在打印\n
时刷新。如果你致电std::cout.sync_with_stdio(false)
,它可能不会再冲洗了。
除此之外,输出将在程序终止时刷新,如另一个答案所示。