2014-12-21 26 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