Использование std::endl
часто неэффективно, поскольку он выполняет две задачи: выводит новую строку (перемещая курсор на следующую строку консоли) и очищает буфер (что замедляется скорость выполнения программы). Если мы выводим несколько строк текста, заканчивающихся символом std::endl
, мы получим многократную очистку, что, вероятно, не нужно.
При выводе текста на консоль обычно нет необходимости явно очищать буфер. Система вывода C++ настроена на автоматическую очистку буфера периодически, и гораздо проще и эффективнее позволить ей делать это самостоятельно.
Чтобы вывести перевод строки без сброса буфера вывода, мы используем символ \n
(внутри одинарных или двойных кавычек), который компилятор интерпретирует как символ новой строки. Символ \n
перемещает курсор на следующую строку консоли, не вызывая сброса буфера, что обычно обеспечивает лучшую производительность. Кроме того, \n
проще ввести и его можно встроить в уже существующий текст в двойных кавычках.
Вот пример, в котором \n
используется несколькими различными способами: