寻求关于 std::cout 和 std::endl 的澄清

seeking clarity regarding std::cout and std::endl

我试图更好地了解当我们在 std::cout 之后不使用 std::endlbuffer 会发生什么。

让我们考虑下面的一段C++代码-

int main(int argc, char** argv) {

    std::cout << "Hello World!";
    return 0;
}   

根据我的理解,std::cout 会将字符串 Hello World! 添加到 buffer。如果我们不在代码末尾添加 std::endl - std::cout << "Hello World!" << std::endl; ,我们是否应该期望 Hello World! 被打印为输出?

是的,因为所有流都在它们的析构函数中被刷新,并且全局 std::cout 对象将在程序退出时被破坏,字符串将被打印。

但是请注意,打印字符串的末尾没有换行符,因此控制台提示看起来不正常(而且很难看),而您的常规提示紧跟在 Hello World!.[=12 之后=]

为了防止 SergeyA 提到的丑陋但仍然避免输入“<< std::endl”,我们通常写

std::cout << "Hello World!\n";

"\n"强制在输出后换行。