我正在学习如何用C ++编程。我的程序应该读取由输入文件中的字符串值和double值组成的行,然后将字符串和每行的double值的平均值写入输出文件。字符串是id号,double值的数量可以在行与行之间变化。
示例:
输入文件:
9875 1,2,3,4
9324 5,5,7,8,9
7458 9,10,11
输出文件:
9875 2.5
9324 6.8
7458 10
我使用向量来保存double值的值并计算值的总和。我的问题是,当我的程序正在读取输入文件时,它确实知道一行何时结束并且新行开始并输出所有双精度值和字符串值(即id号)的平均值。当一条线结束时,我该如何告诉程序?这是我到目前为止的代码:
#include <fstream>;
#include <iostream>;
#include <string>;
#include <vector>;
using namespace std;
int main()
{
ifstream inFile;
ofstream outFile;
string id;
double num;
double sum = 0;
string line;
vector<double> avgs;
inFile.open("in.txt");
outFile.open("out.txt");
if (inFile)
{
inFile >> id >> num;
//read the values from the input file into the vector
while(inFile >> num)
{
avgs.push_back(num);
}
for (int n : avgs)
{
sum += n;
}
outFile << " " << id << " " << avgs.size() << " " << (sum / avgs.size()) << endl;
}
else
{
cout << "Error" << endl;
}
inFile.close();
outFile.close();
return 0;
}