将多行写入输出文件 我正在学习如何在C++中编程。我的程序应该从输入文件中读取由字符串值和双精度值组成的行,然后将字符串和每行双精度值的平均值写入输出文件。字符串是id号,双倍值的数量可能因行而异

将多行写入输出文件 我正在学习如何在C++中编程。我的程序应该从输入文件中读取由字符串值和双精度值组成的行,然后将字符串和每行双精度值的平均值写入输出文件。字符串是id号,双倍值的数量可能因行而异,c++,vector,file-io,C++,Vector,File Io,例如: 输入文件: 98751,2,3,4 93245,5,7,8,9 74589,10,11 输出文件: 98752.5 93246.8 7458 10 我使用一个向量来保存双值的值,并计算值的总和。我的问题是,当我的程序读取输入文件时,它确实知道一行何时结束,新行何时开始,并输出所有双精度值和字符串值(即id号)的平均值。当一行结束时,我该如何告诉程序?以下是我迄今为止的代码: #include <fstream>; #include <iostream>; #in

例如:

输入文件:
98751,2,3,4

93245,5,7,8,9

74589,10,11

输出文件:

98752.5

93246.8

7458 10

我使用一个向量来保存双值的值,并计算值的总和。我的问题是,当我的程序读取输入文件时,它确实知道一行何时结束,新行何时开始,并输出所有双精度值和字符串值(即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;
#包括;
#包括,;
#包括,;
#包括,;
使用名称空间std;
int main()
{
河流充填;
出流孔的直径;
字符串id;
双数;
双和=0;
弦线;
向量平均值;
infle.open(“in.txt”);
outFile.open(“out.txt”);
如果(填充)
{
infle>>id>>num;
//将输入文件中的值读入向量
而(填充>>num)
{
平均推回(num);
}
用于(国际编号:平均值)
{
总和+=n;
}

outFile您能详细说明一下吗?我在输出文件操作数的末尾写入了endl。您的标题表明您在每行基础上写入数据时有问题,可以使用ifstreams
getline
,这将对您有所帮助。该问题要求您逐行读取,但您的程序不会这样做。您需要调查
getline
,以便一次读取一行,然后
istringstream
读取刚刚读取的行中的数字。您能详细说明一下吗?我在输出文件操作数的末尾写入了endl。您的标题表明您在每行基础上写入数据时有问题,可以使用ifstreams
getline
,这将对您有所帮助。问题要求您逐行读取,但您的程序不会这样做。您需要调查
getline
一次读取一行,然后
istringstream
读取刚刚读取的行中的数字。