维基百科上的拼写错误 input/output 个示例
Typo on wikipedia input/output examples
我正在阅读维基百科的以下内容example。
#include <iostream>
int main()
{
std::cout << "Hello, world!\n";
return 0;
}
文章内容如下:
This program would output "Hello, world!" followed by a newline and
standard output stream buffer flush.
我认为这是不正确的,因为 '\n'
不需要 std::flush
。
我应该继续编辑文章,将 '\n'
更改为 std::endl
吗?
不,程序正常终止时会刷新标准输出。 (如果一个简单的 "Hello, world" 程序 异常终止 ,您可能对此无能为力。)不过,您可能想澄清这一点(刷新发生在程序结束,而不是在 std::cout << ...
调用上)。
并且 return 0;
是不必要的(但无害)。
默认情况下,cout
流与 C 库的 stdout
流同步(即它们将共享相同的缓冲区)。并且 C 标准指定 stdout
在写入交互式设备时将进行行缓冲或非缓冲。
这意味着默认情况下,如果输出是交互式设备(例如控制台),cout
将在打印 \n
时刷新。如果你调用 std::cout.sync_with_stdio(false)
,它可能不再刷新。
除此之外,如其他答案所述,输出将在程序终止时刷新。
我正在阅读维基百科的以下内容example。
#include <iostream>
int main()
{
std::cout << "Hello, world!\n";
return 0;
}
文章内容如下:
This program would output "Hello, world!" followed by a newline and standard output stream buffer flush.
我认为这是不正确的,因为 '\n'
不需要 std::flush
。
我应该继续编辑文章,将 '\n'
更改为 std::endl
吗?
不,程序正常终止时会刷新标准输出。 (如果一个简单的 "Hello, world" 程序 异常终止 ,您可能对此无能为力。)不过,您可能想澄清这一点(刷新发生在程序结束,而不是在 std::cout << ...
调用上)。
并且 return 0;
是不必要的(但无害)。
默认情况下,cout
流与 C 库的 stdout
流同步(即它们将共享相同的缓冲区)。并且 C 标准指定 stdout
在写入交互式设备时将进行行缓冲或非缓冲。
这意味着默认情况下,如果输出是交互式设备(例如控制台),cout
将在打印 \n
时刷新。如果你调用 std::cout.sync_with_stdio(false)
,它可能不再刷新。
除此之外,如其他答案所述,输出将在程序终止时刷新。