【发布时间】:2015-04-15 15:37:52
【问题描述】:
例如,我打开 ifstream,我希望它不是像往常一样从当前位置读取到结束,而是反向读取(从当前位置到开始)?
【问题讨论】:
-
可能是 XY 问题;如果您希望数据向后,则向前读取并向后读取结果数据。
-
我想知道那个的原因:D
-
搜索到最后,然后向后搜索 X 个字节,其中 X 是您要读取的字节数。然后向后查找 X + Y 个字节,其中 Y 是您接下来要读取的字节数,等等。
-
通常操作系统不支持。您必须确定文件的大小,寻找到最后 - 一页,阅读一页,处理并重复。 (这里可以确定页面大小)
-
std::ifstream file("input.txt"); std::vector<char> contents { std::istreambuf_iterator<char>{file}, std::istreambuf_iterator<char>{} };.. 然后使用rbegin()和rend()迭代contents。好吧,这应该适用于较小的文件。