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,换行),否则就会多读导致出错。