《C++ Primer Plus》學習筆記——第五章 迴圈和關係表示式(三)
阿新 • • 發佈:2018-12-19
迴圈與文字輸入
迴圈完成的一項最常見最重要的任務:逐字元地讀取來自檔案或鍵盤的文字。
cin物件支援三種不同模式的單字元輸入,其使用者介面各不相同。
使用原始的cin進行輸入:
通過迴圈來讀取鍵盤的文字輸入,則必須有辦法停止讀取。
一種方法是選擇某個特殊的字元(哨兵字元)來作為停止標記。
cin有自身的特點:
- 忽略空格和換行符
- 傳送給cin的輸入被緩衝,需要按下回車鍵。
使用cin.get(char)補救,它讀取輸入的下一個字元(即使他是空格)。但輸入仍被緩衝。
但在C語言中,這個函式存在錯誤,應使用&,而不是直接使用。
cin物件的三種不同模式的單字元輸入:
cin.get() cin.get(ch) cin.get(name,ArSize);name為陣列名,ArSize為讀取的字元數。
檔案尾條件(檢測檔案尾EOF)
檢測到EOF後,cin將兩位(eofbit和failbit)都設定為1,可以通過eof()和fail()來檢視是否被設定,如果設定則返回true,否則false。他們都是事後報告,需要放在讀取之後,注意fail()可用於更多實現中(常用)。
當EOF後會被標記,再次呼叫cin將不再讀取,需要用cin.clear()來清除EOF標記。
也C語言中的getchar()和putchar()。
巢狀迴圈和二維陣列
二維陣列更像一個表格——既有資料行又有資料列。
像下面的宣告:
int maxtemps [4][5];
這意味著maxtemps是一個包含4個元素的陣列,每個元素由5個整陣列成。
可以使用巢狀的for迴圈來顯示陣列元素。
for (int row=0;row<4;row++)
{
for (int col=0;col<5;col++)
{
cout<<maxtemps[row][col];
}
cout<<enl;
}
初始化二維陣列:
例:
int maxtemps[4][5]=
{
{96,100,87,101,105},
{96,98,91,109,105},
……,
……
};
二維陣列的規則可以參考一維陣列。