+ 2

What's the difference between endl and \n?

In c++, I read a comment saying that there is a difference

25th Aug 2023, 10:44 PM
الحسين محمد عبدالله
الحسين محمد عبدالله - avatar
6 Answers
+ 5
Oh, I kind of touched on this answer in your previous question https://www.sololearn.com/Discuss/3235376/?ref=app So, you already understand that both '\n' and endl output a newline. Normally, writing '\n' merely adds one or two more characters to the output buffer. As an optimization, the system delays writing to the output device until the buffer is full, then it writes the whole buffer, saving overhead in processing interrupts. The difference that endl makes is that after adding newline, it then follows up with a flush of the output buffer, forcing all characters waiting in the output buffer to get written out immediately. This is especially useful for debugging. When a program crashes, often the output buffer is lost. Flushing output helps you to be certain of what the last successful output was.
26th Aug 2023, 2:09 AM
Brian
Brian - avatar
+ 3
الحسين محمد عبدالله In C++, both `endl` and `\n` are used to create a new line in the output. However, there is a difference between them. When you use `endl`, it not only adds a new line but also flushes the output buffer, which means the output is immediately displayed. On the other hand, when you use `\n`, it only adds a new line without immediately flushing the buffer. This can have an impact on performance in certain situations.
26th Aug 2023, 2:04 AM
EAJUDDIN
EAJUDDIN - avatar
+ 2
The processing overhead I mentioned would be any extra steps required to prepare for outputting a character. To state it simply, it takes more processing to send two characters, one at a time, than it does to send them both together in bulk. You can extrapolate that principle to apply to sending a partially-full buffer several times, versus a full buffer.
26th Aug 2023, 2:59 PM
Brian
Brian - avatar
+ 2
Alhaaj [LESS ACTIVE] the other posts here explain the difference. It is more than mere syntax.
27th Aug 2023, 4:47 PM
Brian
Brian - avatar
+ 1
both are same both use for adding a new line in your code just there Syntex are different.
27th Aug 2023, 1:58 PM
Alhaaz
Alhaaz - avatar
0
Brian What does saving overhead in processing mean?
26th Aug 2023, 1:11 PM
الحسين محمد عبدالله
الحسين محمد عبدالله - avatar