C++有循環地讀文件


之前寫過一篇讀寫文件的博客,參見C++——簡單的文件輸入輸出

這個版本只是簡單的介紹了文件讀寫的大體步驟,還存在很多問題。其中一個問題就是:你並不知道文件中有多少數據。如果你想讀入文件,就必須要先查看文件,然后根據文件的長短編寫程序,而且讀入不同的文件時還需要改動。

在SOLID五大原則中,一個非常重要的原則是OCP(開閉原則),即只對擴展開放,對修改關閉。每次運行需要修改,這嚴重違背了OCP原則。

所以,我們要讓讀文件操作變得更加方便可行,不需要每次都修改。

在ifstream流中有一個變量是eof(),當沒有可以讀取的數據時,eof()為true。

這時候我們就可以使用while循環來更加方便地進行讀操作了。

#include <iostream>

//1. 頭文件<fstream>
#include <fstream>

using namespace std;

int main()
{
    //2. 創建流,並與文件相關聯
    ifstream input("number.txt");

    //3. 從文件循環讀入數據
    int number, sum = 0;
    cout << "numbers: " << endl;
    while (!input.eof()) {
        input >> number;
        cout << number << endl;
        sum += number;
    }

    cout << "The sum of all numbers: " << sum << endl;

    //4. 關閉流
    input.close();

    return 0;
}

執行結果:

 

 要注意:文件的后面不能有空白字符(包括空格,tab,換行),否則就會多讀導致出錯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM