С C++11
, §27.7.3.8
-
namespace std
{
template <class charT, class traits>
basic_ostream<charT,traits>& endl(basic_ostream<charT,traits>& os);
}
Эффекты: вызывает os.put (os.widen (’\ n’)), затем os.flush ().
Возвращает:. ОС
Итак, из стандарта ясно, что endl
очищает буфер выходного потока, а \n
- нет. Как правило, вы захотите использовать endl
для печати новой строки, но вам также следует помнить, что каждый раз, когда вы делаете это, буфер вывода тоже сбрасывается.
Об осведомленности о платформе
Из стандарта очевидно, что оба делают одно и то же - печатают новую строку точно таким же образом. Итак, если один не зависит от платформы, то и другой должен быть таким же. Поскольку я точно знаю, endl
не зависит от платформы, то же самое должно быть в случае \n
.