4 回答
TA贡献1817条经验 获得超6个赞
std::endl
'\n'
'\n'
std::endl
.
TA贡献1848条经验 获得超10个赞
std::cout << std::endl;
std::cout << '\n' << std::flush;
使用 std::endl
如果要强制立即刷新输出,请执行以下操作。 使用 \n
如果您担心性能(如果您使用的是 <<
(操作员)
\n
std::endl
\n
std::cin
std::cout
TA贡献1869条经验 获得超4个赞
我记得在标准中读到过这方面的内容,下面是这样说的:
参见C11标准,它定义了标准流的行为方式,因为C+程序与CRT接口,C11标准应该在这里控制冲洗策略。
ISO/IEC 9899:201X
7.21.3§7
在程序启动时,三个文本流是预先定义的,不需要显式打开-标准输入(用于读取常规输入)、标准输出(用于写入常规输出)和标准错误(用于写入诊断输出)。在最初打开时,标准错误流没有被完全缓冲;标准输入流和标准输出流被完全缓冲当且仅当可以确定该流不引用交互设备时。
7.21.3§3
当流未缓冲时,字符将尽快从源或目的地出现。否则,字符可以作为块累积和传输到或从主机环境中传输。当流被完全缓冲时,当缓冲区被填充时,字符将作为块传送到或从主机环境中传输。当流被缓冲时,当遇到新行字符时,字符将作为块传送到或从主机环境中传输。此外,当缓冲区被填充时,当输入被请求到非缓冲流时,或者在需要从主机环境传输字符的行缓冲流上请求输入时,字符打算作为块传输到主机环境。对这些特性的支持是实现定义的,并且可能通过setbuf和setvbuf函数受到影响。
这意味着std::cout
和std::cin
全缓冲当且仅当他们指的是一种非交互式设备。换句话说,如果stdout连接到终端,那么行为就没有区别。
但是,如果std::cout.sync_with_stdio(false)
被调用,那么'\n'
即使对交互设备也不会造成同花顺。
- 4 回答
- 0 关注
- 701 浏览
添加回答
举报