我正在尝试编写一些简单的代码来读取文本文件但读取第一行两次。我认为这就像这样简单
std::ifstream file;
file.open("filename", std::ios_base::in);
std::string line;
std::getline(file, line);
// process line
file.seekg(0, ios::beg);
while (std::getline(file, line))
{
// process line
}
但是,由于第一行未处理两次,因此 seekg 必须失败。知道为什么吗?
请注意:这不是我面临的问题,而是它的简化版本,因此不必粘贴多个类代码和多个函数。真正的问题涉及将文件指针传递给多个类中的多个函数。第一个函数可能会或可能不会被调用并读取文件的第一行。第二个函数读取整个文件,但必须首先调用 seekg 以确保我们位于文件的开头。
我只是使用上面的代码来简化讨论。