Итак, в коде много проблем, в основном из-за несовместимости типов.
getline(inputf, grade[i].Name);
означает, что grade[i].Name
должна быть строкой, но она объявлена как массив из 20 строк.
grade[i].IDnum = stoi(s);
означает, что grade[i].IDnum
должен быть int
, но он объявлен как массив из 20 целых
getline(inputf, grade[i].scores)
означает, что grade[i].scores
должен быть строкой, но объявлен как массив из 5 чисел с плавающей запятой.
Вы должны более тщательно продумать типы, которые вы объявляете, и имена, которые вы даете вещам. Вы действительно хотите, чтобы в sGrade
было 20 имен и 20 идентификаторов? Или (что более вероятно) вы действительно хотите, чтобы sGrade
имел одно имя и один идентификатор, но затем объявил массив из 20 sGrades?
Вот каким, я думаю, должен быть код, но только вы ' Точно узнаю
struct sGrade
{
string Name;
int IDnum;
float scores[5];
};
for (int i = 0; i < size; ++i)
{
getline(inputf, grade[i].Name);
getline(inputf, s);
grade[i].IDnum = stoi(s);
for (int j = 0; j < sizeT; ++j)
{
getline(inputf, s);
grade[i].scores[j] = stof(s);
}
}