2014-12-21 31 views
0

我刚开始学习C++,我注意到,当我做cout << "Some text" << endl; ENDL不大胆。我想确保这不是问题,它不会导致任何未来的问题。Eclipse的月神C++ ENDL

+1

是否插入一个换行符?如果是,为什么它是一个问题? – nbro

+1

@nbro:*哎哟* ......一个普遍的误解是,'endl'是当你想换行,你用什么...''\ n''是有特定的目的。 'std :: endl'会做两件事情,它会添加一个换行符,并且会刷新流,这会导致性能损失。一位朋友告诉我,你永远不应该使用'endl',而应该使用'\ n''作为换行符,如果你想* flush *,用'std :: flush'明确地执行它。 –

+0

@DavidRodríguez-dribeas为什么是那么有一个'std :: endl'呢? – nbro

回答

1

不是(< ----这个故意大胆!)使用std::endl!永远。它在C++中没有地位。这是一个好主意,但它正在被滥用。如果你想换行,请使用'\n'。如果你想刷新,请使用std::flushHere是一个更透彻的解释。

我不知道关于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