this post was submitted on 05 Apr 2025
146 points (95.6% liked)

Programmer Humor

34832 readers
239 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 30 points 1 day ago (2 children)

std::endl provides zero portability benefits. C++ does have a portable newline abstraction, but it is called \n, not endl.

[–] [email protected] 45 points 1 day ago

Thank you two for demonstrating the image in the post so well.

[–] [email protected] 6 points 1 day ago (1 children)

No, there's no guarantee that in every context \n is translated portably.

[–] [email protected] 14 points 21 hours ago (2 children)

The same is true of std::endl. std::endl is simply defined as << '\n' << std::flush; nothing more, nothing less. In all cases where endl gives you a "properly translated" newline, so does \n.

[–] [email protected] 4 points 21 hours ago (1 children)

Ahhh, I see. Looks like the magic happens somewhere further down in iostream.

[–] [email protected] 3 points 16 hours ago

It's controlled by whether the stream's opened in text mode or binary mode. On Unix, they're the same, but on Windows, text mode has line ending conversion.

[–] [email protected] 1 points 17 hours ago

Yeah it's an artificial dichotomy based on a popular misconception of what std::endl is and how \n is interpreted.

Ultimately it does not ask about line endings, but about flushing, which is a completely orthogonal question.