我需要以这种格式打开文件
Dat Nguyen 77.7 88.8 99.9 11.1 22.2
Pat Nguyen 2 3 4 5 6
我需要将一行的第一个名称分配给结构的成员数组,并将该行的最后一个名称分配给结构的另一个成员,并将该行的每个数字分配给结构中的分数数组,每个新行进行到结构数组的下一个索引,做同样的事情(对不起,如果我说得那么糟糕)。
我的名字和姓氏分配很顺利但是当它将数字分配给结构成员时,它会跳过前三个数字。我做错了什么?
这是我的代码
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";
}
这是输出
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
答案 0 :(得分:0)
这一点逻辑是可疑的:
tempLine
这将逐个遍历ss
中的所有字符,并尝试从ss
读取整个单词。想一想:对于每个角色,请阅读整个单词。 tempLine
包含ss
的副本,但除此之外,它们是单独的实体。读取字大小的块中的tempLine
和char
大小的块中的while (assignments < MAX_ASSIGMENTS &&
ss >> students[stuCount].score[assignments])
{ // read all assignments until array full or couldn't read an assignment score
assignments++;
}
,字会在循环终止之前很久就会用完。由于OP不会测试单词的读取是否成功,Crom只知道发生了什么。
我想你想要更像的东西:
MAX_ASSIGMENTS
score
是用于调整if (((ItemAttachment)attachment).Item is EmailMessage)
{
EmailMessage msg = ((ItemAttachment)attachment).Item as EmailMessage;
msg.Load(new PropertySet(ItemSchema.MimeContent));
byte[] content = msg.MimeContent.Content;
}
数组大小的OP的占位符。