Getline和ifstream?

时间:2012-11-30 06:35:22

标签: c++

我遇到了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)"会产生错误。

1 个答案:

答案 0 :(得分:1)

你的号码后面有一个'\n'字符。当您inFile >> students[0].id;读取数字时,请停在'\n'字符处。然后,当您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...