当我可以使用换行符时为什么要使用 endl ?

发布于 2024-12-03 09:06:12 字数 168 浏览 0 评论 0原文

当我只能使用 \n 时,是否有理由将 endlcout 一起使用?我的 C++ 书上说要使用 endl,但我不明白为什么。 \n 是否不像 endl 那样受到广泛支持,或者我遗漏了什么?

Is there a reason to use endl with cout when I can just use \n? My C++ book says to use endl, but I don't see why. Is \n not supported as widely as endl, or am I missing something?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

仅此而已 2024-12-10 09:06:12

endl'\n' 附加到流调用 flush()溪流。因此

cout << x << endl;

相当于

cout << x << '\n';
cout.flush();

流可以使用内部缓冲区,当流被刷新时,该缓冲区实际上会被流式传输。对于cout,您可能不会注意到差异,因为它以某种方式与cin同步(捆绑),但对于任意流,例如文件例如,您会注意到多线程程序中的差异。

这里有一个关于为什么需要冲洗的有趣讨论。

endl appends '\n' to the stream and calls flush() on the stream. So

cout << x << endl;

is equivalent to

cout << x << '\n';
cout.flush();

A stream may use an internal buffer which gets actually streamed when the stream is flushed. In case of cout you may not notice the difference since it's somehow synchronized (tied) with cin, but for an arbitrary stream, such as file stream, you'll notice a difference in a multithreaded program, for example.

Here's an interesting discussion on why flushing may be necessary.

溇涏 2024-12-10 09:06:12

endl 不仅仅是 \n 字符的别名。当您向cout(或任何其他输出流)发送内容时,它不会立即处理和输出数据。例如:

cout << "Hello, world!";
someFunction();

在上面的示例中,函数调用有可能在输出刷新之前开始执行。使用endl可以强制在执行第二条指令之前进行刷新。您还可以使用 ostream::flush 函数。

endl is more than just an alias for the \n character. When you send something to cout (or any other output stream), it does not process and output the data immediately. For example:

cout << "Hello, world!";
someFunction();

In the above example, there's is some chance that the function call will start to execute before the output is flushed. Using endl you force the flush to take place before the second instruction is executed. You can also ensure that with the ostream::flush function.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文