>>69
\nは文字としての改行コード
endlは改行込みで且つバッファを即空になるまで書き出す命令

イメージとしては\nを読み込んだ時に呼び出される改行処理を直で呼び、且つflushも呼び出します

\nだけではflushが起こらずただバッファに\nという1バイトが入るだけ

何が違うのだろうか? それはいきなりアプリが落ちた時に判る
まだ書き出ししてないバッファの内容は消失する

なぜそんな危険があるのにバッファなんてものを使うのか?
それはIO装置がメモリに比べてとても遅いから律速されるためだ
一旦メモリに溜めておいて最低回数で一気に書き出した方が速い