c++linuxiostreamendl

What's the difference between std::endl and '\n'


I've read the difference between std::endl and '\n' is that std::endl flushes the buffer and '\n' doesn't. However, as far as I know stdout on linux is line-buffered anyway, so does it mean that std::cout << ... << std::endl is the same as std::cout << ... << '\n'?


Solution

  • std::ostream os;
    
    os << std::endl; // more concise
    
    os << '\n' << std::flush; // more explicit about flushing
    

    Those two lines have the exact same effect.

    The manual flushing is often a waste of time: