Когда писать std::endl а когда '\n'?

1,00
р.
Есть два способа записать перевод строки - std::endl и
. В чем разница? Когда что использовать?

Ответ
std::endl реализован как os.put(os.widen(’
’)) os.flush() . Соответственно всё отличие в том, что endl вызывает flush(), а
- нет.
Вызов flush() очищает буфер потока, и если выполнять его слишком часто, он может ощутимо замедлить выполнение программы.
Также надо помнить что std::endl не нужен там где стандартная библиотека сама вызывает cout.flush():
при завершении программы при чтении из std::cin при записи в std::cerr
Некоторые реализации буферизуют вывод в stdout построчно, и запись
сама будет вызывать flush.
Записать буфер можно явно, манипулятором std::flush, например
std::cout << "Calculating XYZ ... " << std::flush wait_XYZ() std::cout << "OK<br>"
Ссылки
Описание endl на cppreference.com