【发布时间】:2016-05-18 01:02:09
【问题描述】:
我有一个文件,我只想将最后一行输出到控制台。
这是我对如何做的想法。使用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;
}
问题是,当我为文件调用此方法时,什么也没有发生。当我逐步执行它时,减量只是继续减去一个,远远超出了'\n' 的位置。举一个文本文件的例子,它看起来像这样:
垃圾
垃圾
跳过这一行
这是我们正在寻找的线路!
【问题讨论】: