程序清单6.16 sumafile.cpp
#include <iostream>
#include <fstream>
#include <cstdlib>
const int SIZE = 60;
int main()
{
using namespace std;
char filename[SIZE];
ifstream inFile; // 创建一个ifstream对象inFile。
cout << "Enter name of data file:";
cin.getline(filename, SIZE);
inFile.open(filename); // 将inFile同一个文件关联起来。
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;
sum += value;
inFile >> value;
}
if (inFile.eof())
cout << "End of file reached.\n";
else if (inFile.fail())
cout << "Input terminated by data mismatch.\n";
else
cout << "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;
}
“对于DOS/Windows文本文件,每行的末尾必须有一个换行符。”