再次阅读 C++ Primer 5ed 我有一个简单的问题:
据说操纵器std::ends
将空字符插入\0
输出缓冲区,然后将其刷新。
所以我试图通过一个例子来理解它:
#include <iostream>
int main() {
char sz[]{ 'H', 'e', 'l', 'l', 'o', '!' }; // no null-terminator character ('\0')
std::cout << sz; // Hello!
std::cout << sz << std::flush;
std::cout << sz << std::ends;
}
在第一个输出行的上方,我在字符数组中附加了一些不可读的字符;好的,因为我没有\0
在sz
.
在第二行中,输出看起来像第一行,但会强制刷新缓冲区。
第三行使用什么对我很重要
std::ends
;据说这个操纵器将一个 Null-Character 插入到输出缓冲区中,但输出与上面的行相同;哪个打印我猜std::ends
没有插入\0
输出缓冲区的不可读尾随字符?!
这是输出:
Hello!╠╠╠╠╠╠ظش↕♠L·6
Hello!╠╠╠╠╠╠ظش↕♠L·6Hello!╠╠╠╠╠╠ظش↕♠L·6
谢谢你。