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