【发布时间】:2018-07-04 15:44:39
【问题描述】:
信息:在 txt 文件中存储位置、关闭文件,然后使用 c++ 在同一位置打开它的最佳方法是什么?
我有一个大文本文件,我需要对其进行分块解析并输入到某个系统中。到目前为止,我在 ifstream 中加载文件,然后在 getlines 中加载,直到找到我需要的数据(假设数据位于 {x} 位置)。在此之后我关闭文件,处理数据,现在我需要继续从大文件中提供数据。所以我再次打开文件,并获取行,直到这次我到达位置 {x+d} (d 是我读取的数据的偏移量)......
很容易看出,我不是通过文件一次,而是通过文件 (1d + 2d + ... + (N-1)d + Nd) ~ d*N^2 次。现在我想在d之后保存文件中的位置,关闭文件,然后在同一位置立即打开文件。可以为此使用什么?
【问题讨论】:
-
您将使用与将位置存储在一个非常小的文件中相同的东西。无论如何,文件的大小没有实质性的区别。
-
@SamVarshavchik:这并不完全正确。对于大文件(尤其是超过 2GB 的文件),您需要更加小心用于存储位置的数据类型。
-
看起来你有seekg标签?
-
Possible d... 那是 C.
-
@Sadikov -- 首先,有问题的文件是否有固定的行长?如果是这样,您就不需要
getline,因为您可以简单地使用偏移量来计算您在文件中的哪一行/哪一列。
标签: c++ parsing ifstream seekg