Getline and ifstream?

Getline and ifstream?

本文关键字:ifstream and Getline      更新时间:2023-10-16

我在共轭中的ifstream和getline遇到了问题。我有一个文本文档:

1020123456
Madison Williams
90
88
79
86
90

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

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

"cout << students[0].id" 正确生成 ID,但 .name 不执行任何操作。

我在这里做错了什么?

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

在你的数字后面有一个'n'字符。当你inFile >> students[0].id;时,你读到数字,但停在'n'字符上。然后,当您getline() 时,流中还剩下该'n'字符,因此它会读取一个空字符串,跳过'n',然后移动到下一行(这是您的名字所在的地方)。

您需要在读取号码后和呼叫getline()之前跳过'n'。调用 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...