寻求关于 std::cout 和 std::endl 的澄清
seeking clarity regarding std::cout and std::endl
我试图更好地了解当我们在 std::cout
之后不使用 std::endl
时 buffer
会发生什么。
让我们考虑下面的一段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"强制在输出后换行。
我试图更好地了解当我们在 std::cout
之后不使用 std::endl
时 buffer
会发生什么。
让我们考虑下面的一段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"强制在输出后换行。