多次从第一行读取文本文件(C ++)

时间:2014-10-15 10:32:45

标签: c++ file iostream getline

我正在使用" getline"读取文本文件中的某些行。它可以正常工作,但我多次调用该方法。

while(getline(file, line))
{
    //Do something
}

//More code in between

while(getline(file, line))
{
    //Do something else
}

问题在于,当我打电话给" getline"第二次从先前完成的位置开始读取(例如,如果第一个while循环在第二行结束,则下一个循环从第三行开始)。如何确保我的程序每次都从第一行读取文件?

2 个答案:

答案 0 :(得分:7)

如果您需要多次使用相同的第一行,我认为您应该重新考虑您的策略。

  1. 只需阅读一次。
  2. 将其保存在变量中(或将其保存在您已有的变量“line”中)。
  3. 关闭文件。
  4. 您可以避免许多不必要的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);

会让你在流的开始