首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用C++按反向顺序读取文件

如何使用C++按反向顺序读取文件
EN

Stack Overflow用户
提问于 2014-09-10 19:25:41
回答 3查看 5.7K关注 0票数 0

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-10 19:29:35

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

基本算法如下:

  1. 使用is.seekg(0, is.end)查找文件的末尾
  2. is.tellg()确定文件大小
  3. 反复向后查找并读取文件块,直到到达前面为止。
票数 3
EN

Stack Overflow用户

发布于 2014-09-10 19:41:10

如果文件足够小,所以整个内容都很容易被放入内存中,那么编写代码将文件向前读入字符串,然后在事实发生后反转该字符串,将会更快,也更容易。

如果内容不适合记忆,您将不得不使用nneonneo的解决方案。最好关掉缓冲。

票数 1
EN

Stack Overflow用户

发布于 2014-09-10 19:44:36

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

代码语言:javascript
运行
复制
#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;

    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25773498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档