从.txt文件读取时如何不重复相同的变量名

时间:2019-01-24 12:18:58

标签: c++

我有这个.txt文件

Anna 70 79 72 78 71 73 68 74 75 70
Jason 78 89 96 91 94 95 92 88 95 92
kim 83 81 93 85 84 79 78 90 88 79
Maria 93 100 86 99 98 97 96 95 94 92
Daniel 72 60 82 64 65 63 62 61 67 64

我必须将名称和10个数字的平均值存储在具有两个变量(字符串名称和整数平均值)的struct向量中。

我正在这样做:

struct Student
{
    string name;
    int score;
};

int main() {

string defaultPath = "lab2.txt";
ifstream inFile(defaultPath);

while (inFile.fail())
{
    cout << "Fail while opening the file.\n";
    cout << "Please enter a different .txt name/directory: ";
    getline(cin, defaultPath);
}

string name;
int score = 0, totalScore = 0, averageScore = 0;

vector<Student> studentData;

while (inFile >> name >> score >> score >> score >> score >> score >> score
              >> score >> score >> score >> score)
{
    totalScore += score;
    averageScore = totalScore / 10;

    studentData.push_back({name, score});
}

}

问题是,分数中向量存储的是.txt文件中分数的最后一个数字(70,92,79 ...),因为它在查找代码之前一次又一次地重新分配分数平均。

我尝试在while循环内创建另一个循环,但没有成功。.我认为它将起作用的唯一方法是为每个数字分配一个变量名(例如,score1,score2,score3 ... score10)但我敢肯定还有其他更有效的方法!不确定如何。

1 个答案:

答案 0 :(得分:1)

除了使用不同名称创建10个score变量外, 您可以在循环中获得分数:

while (inFile >> name)
{
    while (infile >> score)
    {
        totalScore += score;
    }
    averageScore = totalScore / 10;

    studentData.push_back({name, score});
}

(我想您知道您没有存储计算出的平均值吗?)