之前写过一篇读写文件的博客,参见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
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/195327
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!