終端機輸入輸出


學習C++的過程中,通常是由終端機,也就是文字模式下開始,為了與程式互動,在終端機下輸出程式執行結果,或是從終端機取得使用者的輸入資料是基本需 求,在C++中輸入輸出是由標準library中的iostream library提供,這也就是為何您要在程式的一開頭終是加上:
#include <iostream>

將訊息輸出至終端機,稱之為「標準輸出」(Stand output),C++藉由iostream物件cout(發音see-out)將訊息輸出至終端機,< <運算子將一個指定的訊息或數值指引至標準輸出物件上,例如顯示"Hello! World!"訊息時,您可以這麼撰寫:
cout << "Hello! World!";

標準輸出可以被重新導向至一個檔案,您可以在執行程式時使用" >>"將輸出結果導向至指定的檔案,例如(假設編譯後的可執行檔為main):
main >> result.txt

如果程式的目的是顯示"Hello! World!",則上面的執行會將結果導向至result.txt,而不會在螢幕上顯示"Hello! World!",result.txt中將會有輸出結果Hello! World!。

您也可以使用iostream物件cerr(發音see-err),稱之為「標準錯誤」(Standard error),它會將訊息輸出至終端機上,與標準輸出不同的是,cerr會 立即顯示指定的(錯誤)訊息給使用者知道,即使您指定程式將結果重新導向至檔案,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!訊息並沒有被導向至檔案中,而是直接顯示在終端機中。

要 重新導向 standard output 是用 '>', standard input 則是 "<",而">>" 除了重導 standard output 後,還有附加的功能,也就是會把輸出附加到被導向的目標檔案後頭,如果目標檔案本來不存在,那麼效果就和">"一樣。

如果打算取得使用者的輸入,則可以使用「標準輸入」(Standard input)的iostream物件cin(發音see-in),並使用>>運算子將輸入的訊息指定給變數,例如:
#include <iostream> 
using namespace std;

int main() {
int number = int();
cout << "請輸入數字: ";
cin >> number;
cout << "輸入的數字: " << number << endl;

return 0;
}

執行結果:
請輸入數字: 10
輸入的數字: 10