【发布时间】:2013-04-25 10:59:37
【问题描述】:
我需要读取文本文件,但它太大了,所以我决定只读取这个文件中的一些行。我可以使用 seek 方法来跳转给定的行吗?然后我只能读取该行,因为该文本文件太大,读取整个文件会浪费大量时间。如果不可能,有人会为此提供更好的解决方案吗? (寻找给定的行并读取它)(我知道二进制文本文件正在逐字节读取)
我的文件的前文件
event1 0
subevent 1
subevent 2
event2 3
(在我的文件中,在一个事件之后,它会显示我想寻找前一个事件的行数)
【问题讨论】:
-
你不能每句话都换行,这个概念不存在。您必须手动查找线路结束的位置。实现“线”概念的唯一方法是每条线都有固定的长度,否则你必须逐行获取并跳过你不想要的。
-
...或通过在文件中添加行号。
-
@hansmaad:好主意 - 会很好,但如果你随机选择一个行号然后必须执行二进制或插值查找来找到它,与直接索引到随机位置相比,它仍然相当昂贵与行号无关,然后寻找上一行或下一行结尾......
-
@hansmaad,这如何帮助您寻找特定的“线路”?
-
@uberwulu:问题是文件大,解析慢;将如何增大解析速度并降低解析速度?
标签: c++ c++11 c++builder