學習 C++ 通常是由終端機,也就是文字模式下開始,為了與程式互動,在終端機下輸出程式執行結果,或是從終端機取得使用者的輸入資料是基本需求,在 C++ 中輸入輸出是由標準程式庫的 iostream
提供,這也就是為何要在程式的一開頭加上:
#include <iostream>
標準輸出(Stand output)通常是指終端機,C++ 藉由 iostream
的 ostream
物件 cout
(發音 see-out)將訊息輸出至終端機,<<
運算子的左運算必須是個 ostream
,右邊是運算值,例如顯示 "Hello! World!"
訊息時,可以這麼撰寫:
cout << "Hello! World!";
<<
運算子傳回左運算元作為結果,因此可以串鏈地如下撰寫:
cout << "Hello! World!" << endl;
這相當於:
(cout << "Hello! World!") << endl;
endl
有輸出換行並出清緩衝區的效果。在執行程式時,可以使用 >>
將輸出導向至指定檔案,例如(假設編譯後的可執行檔為 main):
main >> result.txt
如果程式目的是顯示 "Hello! World!"
,以上執行後會將結果導向至 result.txt,而不會在螢幕上顯示 "Hello! World!"
,result.txt 中會有輸出結果 Hello! World!。
ostream
物件 cerr
(發音 see-err),稱為標準錯誤(Standard error),會將訊息輸出至終端機,與標準輸出不同的是,cerr
不會被重新導向,例如:
#include <iostream>
using namespace std;
int main() {
cout << "Hello! World!" << endl;
cerr << "Sorry! World!" << endl;
return 0;
}
在編譯程式之後,如下執行程式,會發現輸出結果如下:
main >> result.txt
Sorry! World!
開啟 result.txt 後,會發現當中只有 Hello! World! 訊息,而 Sorry! World! 訊息並沒有被導向至檔案,而是直接顯示在終端機。
ostream
物件 clog
(發音 see-log)也是寫到標準錯誤,用於輸出日誌訊息,cerr
不經緩衝區,亦有人稱無緩衝標準錯誤,而 clog
會經過緩衝區,亦有人稱緩衝標準錯誤。
要重新導向標準輸出是用 >
,標準輸入則是 <
,而 >>
除了重導標準輸出外,還有附加的功能,也就是會把輸出附加到被導向的目標檔案後頭,如果目標檔案本來不存在,那麼效果就和 >
一樣。
若打算取得使用者的輸入,可以使用標準輸入(Standard input),這可以透過 iostream
的 istream
物件 cin
(發音 see-in)與 >>
運算子,>>
左運算元是個 istream
,右邊是個變數,並傳回左運算元作為結果。例如:
#include <iostream>
using namespace std;
int main() {
int number = int();
cout << "請輸入數字: ";
cin >> number;
cout << "輸入的數字: " << number << endl;
return 0;
}
執行結果:
請輸入數字: 10
輸入的數字: 10