在getline之后返回文件的开头

时间:2011-03-17 17:57:43

标签: c++

所以我已经从文件中读取了所有行

while (getline(ifile,line))
    {
        // logic
    }

ifile是ifstream,line是字符串

我的问题是我现在想再次使用getline,似乎无法返回到文件的开头,因为正在运行

cout << getline(ifile,line);

将返回0

我试图使用:

ifile.seekg (0, ios::beg);

无济于事,似乎没有效果。我该如何回到文件的开头?

3 个答案:

答案 0 :(得分:61)

由于您已到达文件末尾,因此将设置eof标志。你需要使用ifile.clear - 清除它,然后尝试寻找:

ifile.clear();
ifile.seekg(0, ios::beg);

答案 1 :(得分:5)

这是因为在流上设置了eof标志 - 因为你到达了文件的末尾。因此,您必须将此作为额外步骤清除。

例如

ifile.clear();
ifile.seekg (0, ios::beg);

答案 2 :(得分:1)

仅供参考:在我的情况下,订单DID很重要,因此

  1. 明确
  2. 寻求
  3. 否则下一个getline操作失败(MSVC v120)