我在连接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)"会产生错误。
发布于 2012-11-30 14:42:45
在你的数字后面有一个'\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...https://stackoverflow.com/questions/13640184
复制相似问题