語法書 / AA 競程語法書 上冊 / 第四單元 / EOF 與常見輸入模式

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,然後輸出所有數字的平均值。