我是C ++的新手,我正在探索一些事情。现在我正在阅读一个文本文件。这是代码:
while (myfile.good()) {
myfile >> tempNum;
getline(myfile, tempName);
getline(myfile, tempCourse);
myfile >> tempTuition;
if (myfile.eof()) break;
Student temp(tempNum, tempName, tempCourse, tempTuition);
students.push_back(temp);
}
现在我的文件目前包含:
201699856
Justin Chu
BSITDA
36889
问题是,使用我当前的代码,它读起来像这样。
在tempTuition,我的程序冻结,因为它包含无效数据。为什么getline()跳过第二行?如何修复程序以正确读取?
答案 0 :(得分:0)
来自std::getline
:
在以空格分隔的输入后立即使用,例如在int n; std::cin >> n;
之后,getline会使用运算符&gt;&gt;消耗输入流上留下的结束字符,并立即返回。一个常见的解决方案是在切换到面向行的输入之前忽略输入行上的所有剩余字符cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
。