close

按此前往C++完整教學目錄

 

 

簡介:C++中,輸出和輸入(簡稱”I/O”)的資料是一串有著先後次序的資料串流data stream),

越先執行輸入或輸出命令的資料就越先被處理。輸入或輸出的資料來源可以是鍵盤或螢幕,以及檔案、字串。

C++使用相關的類別物件來處理I/O,以下是這些相關類別的類別架構class hierarchy)圖:

image

箭頭表示類別的繼承關係,AàB表示A類別繼承B類別。

ios_base類別和ios類別定義輸入物件與輸出物件的共同特性。

istream負責定義輸入類別,ostring負責定義輸出類別。

cinistream類別的一個物件,coutostream類別的一個物件。

ifstream/ofstream負責定義檔案資料的輸入/輸出。

istringstream/ostringstream負責定義字串資料的輸入/輸出。

iostream 同時掌管輸入與輸出。

  欲輸入或輸出的資料若原為二進位碼,則會被C++轉換為字元資料,這即是所謂的高階I/O (high-level I/O)(相對的,所謂的低階I/O (low-level I/O)是指輸入輸出的資料保持為二進位碼)。而之後再轉換成相對應的資料型態(stringboolint等等)C++將這些資料存放在輸入輸出物件(例如coutcin)緩衝區(buffer)中,使其有序的集合起來,待收到指令(譬如程式碼的執行或者輸入enter鍵)後再執行輸入或輸出的動作。

1. 檢查輸入與輸出的狀態,利用I/O物件的成員函式:good()fail()good()I/O物件成功輸入/輸出時回傳true,否則回傳falsefail()I/O物件輸入/輸出失敗時回傳true,否則回傳false

int a,b;

cout<<"請輸入a:";cin>>a;  //第一次輸入

if(cin.fail()){cout<<"輸入錯誤!";} 

else if(cin.good()){

cout<<a<<endl;

//第一次顯示(輸出)

cin.clear();

cout<<"請輸入b:";cin>>b;  //第二次輸入

if(cin.fail()){cout<<"輸入錯誤!";}

else if(cin.good()){

cout<<b<<endl;

//第二次顯示(輸出)

註一:由於所要輸入的型式是整數,若第一次輸入為10,則第一次輸出為10。又若第二次輸入為15,則第二次輸出為15

註二:若第一次輸入為aa,則第一次輸出為輸入錯誤!。此時若沒有cin.clear();這一行,C++會自動判定接下來的cin輸入也都是錯誤。

註三:使用C++進行輸入時,輸入的內容若有空白字元(空格)cin…等等的輸入類別物件會把空白字元當作終止字元(terminator),也就是執行輸入的指令。若第一次輸入為:1  100,則a=1,第二次輸入也不必使用者輸入了,b=100C++把空白字元分隔開的1100當作兩次的輸入了。

 

 

上一篇:類別(class) 嵌入

下一篇:檔案讀寫 控制參數

arrow
arrow

    埃伯 發表在 痞客邦 留言(0) 人氣()