我正在使用" getline"读取文本文件中的某些行。它可以正常工作,但我多次调用该方法。
while(getline(file, line))
{
//Do something
}
//More code in between
while(getline(file, line))
{
//Do something else
}
问题在于,当我打电话给" getline"第二次从先前完成的位置开始读取(例如,如果第一个while循环在第二行结束,则下一个循环从第三行开始)。如何确保我的程序每次都从第一行读取文件?
答案 0 :(得分:7)
如果您需要多次使用相同的第一行,我认为您应该重新考虑您的策略。
您可以避免许多不必要的I / O操作......
尽管如此,正如其他人所建议的那样,无论出于何种原因,你都需要插入这种方法:
myinputstream.clear(); //clear the buffer
myinputstream.seekg(0, ios::beg); //reset the reading position to beginning
每次尝试读取同一文件之间的。 不要忘记最终关闭它。
myinputstream.close();
答案 1 :(得分:3)
有一个应该有用的seekg()函数 http://www.cplusplus.com/reference/istream/istream/seekg/
iostream::seekg (0, iostream::beg);
会让你在流的开始