Возможный дубликат:
C ++: std :: endl vs \ n а>
Мне интересно, есть ли существенная разница между этими двумя способами печати новой строки:
cout << endl; //approach1
cout << "\n"; //approach2
Есть ли практическая разница?
Возможный дубликат:
C ++: std :: endl vs \ n а>
Мне интересно, есть ли существенная разница между этими двумя способами печати новой строки:
cout << endl; //approach1
cout << "\n"; //approach2
Есть ли практическая разница?
Да они разные.
"\n"
- это просто строка длиной 1, которая добавляется к stdout.
std::endl
, напротив, представляет собой объект, который вызывает добавление символа новой строки ("\n"
) И для очистки буфера стандартного вывода. По этой причине потребуется дополнительная обработка.
endl
, а не с "\n"
, и это все, что касается C ++.
- person Lightness Races in Orbit; 10.02.2011
unitbuf
) endl
принудительно выполняет сброс, но то, что вы используете "\n"
вместо endl
, не означает, что вы избегали очистки буфера.
- person Billy ONeal; 10.02.2011
operator<<
на нем? (Примечание: когда я говорю «базовый поток», я имею в виду конкретный экземпляр std::ostream
- то есть файловый поток или строковый поток. Возможно, я не понял?) Моя точка зрения заключается в том, что потоку разрешено очищаться, когда он захочет. Вы можете заставить его смыться, но не можете предотвратить смывание. В большинстве распространенных реализаций для консольных потоков новая строка просто запускает сброс - стандарт C ++ не говорит, что это должно происходить, но и не запрещает этого.
- person Billy ONeal; 11.02.2011
operator<<
функциях, которые определены в терминах общих ostream
, а не о конкретном экземпляре, который вы используете.
- person Billy ONeal; 14.02.2011
endl
очистит поток. Если вам не нужно полностью очищать поток, вы можете использовать любой из них. - person Daniel Lidström   schedule 22.12.2010