我有一个文件,我只想将最后一行输出到控制台。
这是我对如何做到这一点的想法。用于file.seekg(0, ios::end)
将自己置于文件末尾。
然后,我可以创建一个递减变量int decrement = -1;
并使用一个 while 循环
while (joke.peek() != '\n')
{
decrement--;
}
并获得我最后一行的起始位置(从末尾向后)。
知道这一点,joke.seekg(decrement, ios::end);
应该将我设置到最后一行的开头,并假设我之前声明过string input;
我会认为
getline(joke, input);
cout << input << endl;
会将其输出到控制台。
完整代码
void displayLastLine(ifstream &joke)
{
string input;
int decrement = -1;
joke.clear();
joke.seekg(0, ios::end);
while (joke.peek() != '\n')
{
decrement--;
}
joke.clear();
joke.seekg(decrement, ios::end);
getline(joke, input);
cout << input << endl;
}
问题是,当我为文件调用此方法时,什么也没有发生。当我逐步通过它时,减量只是继续减去一个,远远超出了 a 的范围'\n'
。举一个文本文件的例子,它看起来像这样:
垃圾
垃圾
跳过这一行
这是我们正在寻找的线路!