2014-12-21 4 views
0

Я только начал изучать C++, и я заметил, что когда я делаю cout << "Some text" << endl; endl не выделен жирным шрифтом. Я хочу убедиться, что это не проблема, и это не вызовет никаких будущих проблем.Eclipse Luna C++ endl

+1

Вставляет ли он новую строку? Если да, то почему это проблема? – nbro

+1

@nbro: * ouch * ... распространенное недоразумение заключается в том, что 'endl' - это то, что вы используете, когда хотите новую строку ...' '\ n'' существует для этой конкретной цели. 'std :: endl' выполняет две вещи: добавляет новую строку, и она * сбрасывает поток, что может привести к снижению производительности. Друг научил меня, что вы никогда не должны использовать 'endl', а скорее' '\ n'' для новой строки, и если вы хотите * скрыть *, сделайте это явно с помощью' std :: flush' –

+0

@ DavidRodríguez-dribeas. Почему там есть 'std :: endl'? – nbro

ответ

1

Do не (< ---- это намеренно жирный!) Использовать std::endl! Когда-либо. Это не место в C++. Это была хорошая идея, но она подвергается насилию. Если вы хотите использовать новую строку, используйте '\n'. Если вам нужен флеш, используйте std::flush. Here - более подробное объяснение.

Я не знаю об Eclipse, но я бы предположил, что выделение выделенных жирным шрифтом выделено: std::endl не является ключевым словом. Это просто функция (ну, на самом деле это шаблон функции, но детали действительно не имеют значения) с указателями определенной подписи (std::ostream&(std::ostream&)), к которым обращаются специальные при использовании с оператором вывода на std::ostream: оператор будет просто вызовите функцию с потоком в качестве аргумента. Эти функции называются манипуляторами.

+0

Спасибо за объяснение материала 'endl', я не знал об этом: D – nbro

+0

Единственная причина, по которой я спросил, это то, что я видел это видео и задавался вопросом, почему мой не был смелым https://www.youtube.com/ смотреть? v = 1Enqpi4trl8 & list = PLmpc3xvYSk4wDCP5zjt2QQXe8-JGHa4Kt & index = 4 Спасибо за объяснение. – aku181