tellg()和seekg()无法正常工作

时间:2014-05-27 08:03:12

标签: c++ file stream

    ifstream fin;
    fin.open("c:\\1\\a.txt");

    if(fin)
    {
            string readWord1;
            streampos currentPos;
            while(fin >> readWord1)
            {
                    currentPos = fin.tellg();
                    string readWord2;
                    while(fin >> readWord2)
                    {
                            Memo1->Text = Memo1->Text + AnsiString(readWord2.c_str());
                            Memo1->Text = Memo1->Text + "\n";
                    }
                    fin.seekg(currentPos);
                    streampos c = fin.tellg();
            }
    }

我想在读取readWord1之后的所有单词后返回指向currentPos的文件指针。但是在第一步中 streampos c 表示指针在-1中,因此 seekg()不会将指针移动到 currentPos

1 个答案:

答案 0 :(得分:2)

根据文档(或至少一个版本):

  

如果在呼叫之前设置了eofbit标志,则该功能失败(设置   failbit and returns)。

您需要使用fin.clear()清除eofbit然后它将按预期工作。