简单文件数据读入处理

来源:互联网 发布:11支持mac系统吗 编辑:程序博客网 时间:2024/05/21 00:16
#include <iostream>#include <fstream>        //文本文件输入输出头文件#include <cstdlib>         // 函数exit()原型头文件#include <cstddef>        //数组大小正确类型头文件using namespace std;     //命名空间//const int SIZE = 60;int main(){    const size_t SIZE=60;char filename[SIZE];ifstream inFile;             //读入文件对象cout << "Enter name of data file: ";cin.getline(filename, SIZE);//读入文件数据每SIZE个字符读入字符数组filenameinFile.open(filename);  //绑定读入文件    //检测文件是否正确打开,//用于排除指定文件不存在,文件位于其他目录,文件拒绝访问,文件名输错,文件扩展名错误等引起的文件无法正常打开。if (!inFile.is_open())  {cout << "Could not open the file " << filename << endl;cout << "Program terminating.\n";exit(EXIT_FAILURE);}double value;double sum = 0.0;int count = 0;        //方法①标准读入文件数据处理操作//inFile >> value;         // 循环开始前读入第一个数据 while (inFile.good()) // while input good and not at EOF { ++count;                // 计数 inFile >> value;   sum += value;       // 求和 //inFile >> value;    //下次循环开始前读入上次循环末尾数据 }//方法②简化读入文件数据处理操作,与方法①等价!!!   // while( !inFile.eof() && inFile>>value )   //{   //    ++count;  //sum+=value;   //}   //方法③简化读入文件数据处理操作,与方法①等价!!!//while( inFile>>value )//{//++count;//sum+=value;//}//以下代码可用于确定文件循环终止的原因if (inFile.eof())cout << "End of file reached.\n";//超过文件末尾EOFelse if (inFile.fail())cout << "Input terminated by data mismatch.\n";//EOF和类型不匹配elsecout << "Input terminated for unknown reason.\n";//其他原因,如文件受损或硬盘故障等if (count == 0)cout << "No data processed.\n";//没有文件数据else{cout << "Items read: " << count << endl;cout << "Sum: " << sum << endl;cout << "Average: " << sum / count << endl;}inFile.close();         //关闭打开文件return 0;}


事先创建的文本数据如下图所示: