0

我在使用 ifstream 和 getline 时遇到问题。我有一个文本文件:

1020123456
Madison Williams
90
88
79
86
90

并希望将名称分配给students[0].name学生struct类型为学生的位置。我尝试使用

inFile >> students[0].id;
getline(inFile, students[0].name);

"cout << students[0].id"正确生成 ID,但 .name 什么也不做。

我在这里做错了什么?

"inFile.getline(students[0].name)"产生错误。

4

1 回答 1

1

你的数字后面有一个'\n'字符。当您inFile >> students[0].id;阅读数字时,请停在'\n'字符处。然后,当 you 时getline(),流中还剩下那个'\n'字符,所以它会读取一个空字符串,跳过'\n',然后移动到下一行(这是你的名字所在的位置)。

您需要'\n'在阅读号码之后和打电话之前跳过getline()。呼叫 inFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');将忽略剩下的内容,inFile直到遇到'\n'角色。所以改成:

inFile >> students[0].id;
inFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
getline(inFile, students[0].name);
// continue as normal...
于 2012-11-30T06:42:44.627 回答