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
答案 0 :(得分:2)
根据文档(或至少一个版本):
如果在呼叫之前设置了eofbit标志,则该功能失败(设置 failbit and returns)。
您需要使用fin.clear()
清除eofbit然后它将按预期工作。