插入标准::结束后输出奇怪

Weird output after inserting std::ends

本文关键字:输出 结束 标准 插入      更新时间:2023-10-16

如果我写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.5 秒后,它变成 After。

语言本身而言,cout << ends所做的只是将写入流。它不会关闭流或导致意外重新排序。为避免任何疑问,在您的情况下,该语言保证"Hi!"将在之前缓冲,并在"1234"之前缓冲。

我的理解是终端应该默默地忽略。(它应该将其视为NOP,即无操作指令(,但一些终端错误地将其解释为空格。

这似乎正在发生在您的案例中。