0

我试图更好地了解buffer当我们不使用std::endlafter时会发生什么std::cout

让我们考虑以下一段 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!被打印为输出?

4

2 回答 2

3

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

但是请注意,打印字符串的末尾不会有换行符,因此控制台提示符看起来不寻常(而且丑陋),而您的常规提示符紧跟在Hello World!.

于 2021-05-14T14:09:23.307 回答
0

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

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

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

于 2021-05-14T14:17:34.903 回答