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