"Wouldn't the buffer be flushed regardless since the text has been outputted to the screen?"
No! std::endl
implies flushing. The underlying buffer won't be flushing (written on the screen),
until hitting a certain watermark (buffer size).
If you want to have it flushed, call cout.flush()
explicitely:
std::cout << "write to screen";
std::cout.flush();
The real key to the solution is, what the underlying std::basic_streambuf
interface actually implements.
There could be various implementations:
- Calling
flush()
every time the certain watermark of the underlying buffer is hit
- Calling
flush()
every time (not very efficient)
- Calling
flush()
as soon a '\n'
had been printed
- Calling
flush()
as guaranteed with std::endl
The internal buffer management shouldn't be your business of concern, unless you're trying to provide your own std::basic_streambuf
implementation.