如果我写cout << "Hi!" << ends << "1234";
,1
会在一段时间后消失。从C ++参考,我知道std::ends
在流中插入一个空字符。但这种插入何时发生?
完整的代码是
#include <iostream>
int main(int argc, char** argv) {
std::cout << "Hi!" << std::ends << "1234";
return EXIT_SUCCESS;
}
答案 0 :(得分:0)
就语言本身而言,所有cout << ends
都会向流写入\0
。它不关闭流或导致意外重新排序。为了避免任何疑问,在您的情况下,语言保证{<1}}将在 "Hi!"
之前缓冲并且在之前缓冲 { {1}}。
我的理解是终端应该默默地忽略\0
。 (它应该将其视为NOP,即无操作指令),但有些终端将其误解为空格。
这似乎发生在您的案件中。