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

Ben*_*Ben 1 c++ iostream file getline

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

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

//More code in between

while(getline(file, line))
{
    //Do something else
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我第二次调用"getline"时,它从之前完成的位置开始读取(例如,如果第一个while循环在第二行结束,则下一个循环从第三行开始).如何确保我的程序每次都从第一行读取文件?

Xar*_*lem 7

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

  1. 只需阅读该行一次.
  2. 将其保存在变量中(或将其保存在您已有的变量"行"中).
  3. 关闭文件.

你会避免很多不必要的I/O操作......

尽管如此,正如其他人所建议的那样,如果你想以这种方式进行任何理由,你需要插入:

myinputstream.clear();             //clear the buffer
myinputstream.seekg(0, ios::beg);  //reset the reading position to beginning
Run Code Online (Sandbox Code Playgroud)

每次尝试读取同一文件之间.不要忘记最终关闭它.

myinputstream.close();
Run Code Online (Sandbox Code Playgroud)