• @SpaceNoodle@lemmy.world
    link
    fedilink
    43
    edit-2
    21 days ago

    If I’m writing C++, I’m usually optimizing for portability over performance, in which case I would prefer std::endl as it would yield the best results regardless of platform; it also keeps the end-of-line character out of other strings, making code just a little cleaner.

    \n is for when I’m done pretending that anything that isn’t Unix-like is OK, or I’m counting the cycles of every branch instruction.

    • Oriel Jutty :hhHHHAAAH:
      link
      fedilink
      3321 days ago

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

        • Oriel Jutty :hhHHHAAAH:
          link
          fedilink
          1620 days ago

          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.

            • AnyOldName3
              link
              fedilink
              420 days 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.