“\ N” или '\ n' или std :: endl to std :: cout? [Дубликат]
На этот вопрос уже есть ответ:
C ++: «std :: endl» против «\ n» 12 ответов Прошло много лет с тех пор, как я перестал использовать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
не работает, символы новой строки ничего не сбрасывают.