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

原文地址:https://www.cnblogs.com/bwjblogs/p/12625148.html