4.8 EOF 與常見輸入模式
不同題目的輸入方式不一樣。有的會告訴你「輸入共 N 組」,有的說「讀到檔案結尾」,有的說「讀到 0 就停止」。你得能應付各種模式。
EOF(End of File): 表示沒有更多輸入資料了。
檢查 EOF 的方法:
if (cin.eof()) {
// 已經沒有輸入了
}
但更常用的是利用 cin >> var 的返回值:
while (cin >> n) {
// 成功讀入 n,繼續處理
}
// 讀入失敗時迴圈停止(包括 EOF 和格式錯誤)
¶範例程式碼
範例 1:讀到檔案結尾
#include<iostream>
using namespace std;
int main() {
int n;
// 只要能成功讀入一個整數,就繼續迴圈
while (cin >> n) {
cout << "You entered: " << n << "\n";
}
cout << "Done reading.\n";
return 0;
}
執行範例:(手動輸入 3 5 7,然後按 Ctrl+D 表示 EOF)
You entered: 3
You entered: 5
You entered: 7
Done reading.
範例 2:讀到 0 就停止
#include<iostream>
using namespace std;
int main() {
int n;
while (cin >> n && n != 0) {
cout << "Number: " << n << "\n";
}
cout << "Got 0, stop reading.\n";
return 0;
}
執行範例:(手動輸入 10 20 30 0)
Number: 10
Number: 20
Number: 30
Got 0, stop reading.
動手試試看:寫一個程式,讀入數字直到遇到 EOF,然後輸出所有數字的平均值。