je dois ouvrir un fichier dans ce formatC de la sstream sauter trois premières entrées d'un fichier
Dat Nguyen 77.7 88.8 99.9 11.1 22.2
Pat Nguyen 2 3 4 5 6
Je dois attribuer le premier nom d'une ligne à un tableau de membre de struct et le nom de la ligne à un autre membre de la structure et chaque nombre de la ligne à un tableau de partitions dans la structure et chaque nouvelle ligne va à l'index suivant du tableau struct, en faisant la même chose (Désolé si j'ai mal écrit). J'ai l'attribution du prénom et du nom qui va bien, mais quand il s'agit d'assigner les numéros aux membres de la structure, il saute les trois premiers nombres. Qu'est-ce que je fais mal?
Voici mon code
void fileLoad(Gradebook *students, int &stuCount, int &assignments)
{
ifstream fin;
fin.open("Scores.txt");
if (!fin.is_open())
cout << "Failed to open file.\n";
if (stuCount < 10)
{
int n = 0;
string tempLine;
string line[10];
while (!fin.eof())
{
getline(fin, tempLine);
line[n] = tempLine;
stringstream ss(tempLine);
ss >> students[stuCount].fname >> students[stuCount].lname;
assignments = 0;
for (int i = 0; tempLine[i] != '\0'; i++)
{
ss >> students[stuCount].score[assignments];
if (tempLine[i] == ' ')
assignments++;
}
cout << line[n] << endl;
assignments--;
stuCount++;
n++;
cout << assignments << endl;
}
}
else
cout << "Already max students.\n";
}
est ici la sortie
Dat Nguyen 77.7 88.8 99.9 11.1 22.2
Pat Nguyen 2 3 4 5 6
1. Add a new student to the class
2. Assign grades for a new assignment
3. List one student, displaying all their grades and their course average
4. List all the scores for a chosen assignment
5. Display all grades currently contained in the gradebook
6. Save the gradebook to file
7. Exit the program
Enter choice: 3
Enter a student #: 1
Dat Nguyen
Assignment 1: 11.1
Assignment 2: 22.2
Assignment 3: -9.25596e+61
Assignment 4: -9.25596e+61
Assignment 5: -9.25596e+61
Assignment 6: -9.25596e+61
Average: -5.28912e+61
Ne jamais utiliser [ 'while (! Fin.eof())'] (http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong) – NathanOliver
@Nathan quoi utiliser à la place? –
Remplace 'while (! Fin.eof())' par while (getline (fin, tempLine)) 'et supprime' getline() 'du corps de la boucle. –