21xrx.com
2024-11-09 00:19:06 Saturday
登录
文章检索 我的文章 写文章
如何使用C++读取文件的最后一行?
2023-06-25 03:32:51 深夜i     --     --
C++ 读取文件 最后一行

在C++编程中,有时候需要读取文件的最后一行,以便进一步进行处理。本文将介绍如何使用C++来读取文件的最后一行。

首先,我们需要打开文件,可以使用C++中的ifstream来打开文件,代码如下:


ifstream file("filename");

if(!file) {

  cerr << "Cannot open file.\n";

  return 1;

}

这里我们使用了文件名为"filename"的文件进行示例。当打开文件失败时,程序会输出错误信息并退出。

接下来,我们可以使用file.seekg()函数将文件指针移动到文件尾部,代码如下:


file.seekg(0, ios::end);

这里的0表示从文件开头开始移动,ios::end表示文件末尾,因此这行代码将文件指针移动到了文件末尾。

我们需要考虑最后一行的长度,因为最后一行可能不是以换行符结尾,因此我们需要先读取最后一个字符,判断它是否为换行符。如果不是,则需要向前读取字符,直到找到最后一行的开始位置为止。代码如下:


char ch;

do {

  file.seekg(-2, ios::cur);

  if((int)file.tellg() <= 0) {

    file.seekg(0);

    break;

  }

  file.get(ch);

} while(ch != '\n');

在上面的代码中,我们使用了do-while循环来依次向前读取字符,如果找到了换行符,则表示最后一行已经找到。如果文件没有换行符,最终程序会将文件指针移动到文件开头。

接下来,我们可以使用getline()函数来读取最后一行的内容,代码如下:


string lastLine;

getline(file, lastLine);

cout << "Last line: " << lastLine << endl;

这里使用了getline()函数将最后一行读取到字符串变量lastLine中,并将其输出到控制台中。

最后,不要忘记关闭文件,代码如下:


file.close();

总结起来,我们可以使用以下代码来读取文件的最后一行:


#include <iostream>

#include <fstream>

#include <string>

using namespace std;

int main() {

  ifstream file("filename");

  if(!file) {

    cerr << "Cannot open file.\n";

    return 1;

  }

  file.seekg(0, ios::end);

  char ch;

  do {

    file.seekg(-2, ios::cur);

    if((int)file.tellg() <= 0) {

      file.seekg(0);

      break;

    }

    file.get(ch);

  } while(ch != '\n');

  string lastLine;

  getline(file, lastLine);

  cout << "Last line: " << lastLine << endl;

  file.close();

  return 0;

}

以上就是使用C++读取文件的最后一行的方法。希望对大家有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复