如何使用C ++以相反的顺序读取文件

时间:2014-09-10 19:25:41

标签: c++ io

如何使用C ++以相反的顺序(即从eof)读取文本文件?

3 个答案:

答案 0 :(得分:3)

是的,但你基本上必须手动完成。

基本算法如下:

  1. 使用is.seekg(0, is.end)
  2. 搜索文件的末尾
  3. 使用is.tellg()
  4. 确定文件大小
  5. 反复向后搜索并阅读文件的块,直到您到达前面

答案 1 :(得分:1)

如果文件足够小以致整个内容很容易适合内存,那么编码将文件转发到字符串然后在事后反转该字符串就会快得多且容易得多。

如果内容不适合内存,则必须使用nneonneo的解决方案。最好关闭缓冲。

答案 2 :(得分:0)

只需在istream类中使用seekg和相关函数即可。这是一个有效的例子。测试

#include <fstream>
#include <iostream>

using namespace std;

int main()
{
    ifstream in("file.txt");

    // Get the length of the file
    in.seekg(0, in.end);
    int len = in.tellg();

    // Start reading the file in reverse
    char c;
    while (len--) 
    {
        in.seekg(len, in.beg);
        in >> c;
        cout << c;

    }
}