关于维基百科输入/输出示例的错字

时间:2015-01-27 15:30:17

标签: c++ cout flush

我正在从维基百科阅读以下example

#include <iostream>

int main()
{
    std::cout << "Hello, world!\n";
    return 0;
}

该文章的内容如下:

  

这个程序将输出&#34; Hello,world!&#34;接着是换行符   标准输出流缓冲区刷新。

我不相信这是正确的,因为std::flush上不需要'\n'

我应该继续编辑文章,将'\n'更改为std::endl吗?

2 个答案:

答案 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),它可能不会再冲洗了。

除此之外,输出将在程序终止时刷新,如另一个答案所示。