4 回答

TA貢獻1873條經驗 獲得超9個贊
你需要明白這些概念:
cin是讀入標準輸入的istream對象
cout是寫到標準輸出的ostream對象
>>操作符是用于從istream對象中讀入輸入
<<操作符用于把輸出寫到ostream中
endl是輸出一個換行符并刷新緩沖區
就是說endl是輸出方面的,不能用于cin以及>>

TA貢獻2080條經驗 獲得超4個贊
endl是一個模板函數名
template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>&
endl(basic_ostream<_CharT, _Traits>& __os)
{ return flush(__os.put(__os.widen('\n'))); }
詳細的不說了,反正基本上可以這樣理解,光一個不帶括號的endl就是一個函數指針常量,參數是輸出流,返回值是輸出流的引用,然后在輸出流里重載了<<運算,對這種函數指針做 os << fun 操作就相當于調用 fun(os)。使用cout << endl;
就相當于調用endl(cout);你可以聲明一個函數
ostream& hahaha(ostream& os)
{
os << "Hello World!!";
return os;
}
然后使用 cout << hahaha << endl;看看會發生什么
這種函數稱為操作算子,常用的有left,right,hex什么的,你可以自己搜一下
對輸入流來說cin >> endl;當然會報錯,因為沒有重載,你往一個函數指針常量里輸入,就像cin >> printf;或是cin >> strcpy;一樣不會有什么好下場
- 4 回答
- 0 關注
- 1816 瀏覽
添加回答
舉報