之前寫過一篇讀寫文件的博客,參見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,換行),否則就會多讀導致出錯。