Прошло много лет с тех пор, как я перестал использовать std::endl для завершения строк при записи в std::cout и вместо этого начал использовать "\n".
Но теперь я начинаю видеть больше фрагментов кода, используя '\n', и я начал задаваться вопросом, что может быть лучше.
Помимо очевидного, что одна из них является строкой, а другая - символом, есть ли преимущество в использовании этого:
std::cout << variable << '\n';
Через это:
std::cout << variable << "\n";
Позднее добавление:
Когда я задал этот вопрос, мне показалось, что новая строка '\n' сбросила буфер. Теперь я знаю, что это зависит.
По умолчанию std::cin привязан к старому stdin FILE*, а std::cout привязан к stdout. Из-за этой привязки происходит промывка новой строки. По умолчанию stdout, если подключен к терминалу, буферизируется по строке. Это означает, что новая строка очистит буферы. Поэтому при печати новой строки с использованием std::cout это приведет к stdout.
Если stdout не подключен к терминалу (например, выход был перенаправлен или передан по каналам), или если связь между std::cout и stdout нарушена, то символы новой строки ничего не будут скрывать.