是否有快速的方法从行号中获取文本文件中的行?如果我只想要第20行是否有任何东西可以让我做一些像获得第20行的东西?我知道getline(in,line)每次读取一行,但我宁愿不调用getline 20次来获得第20行。
谢谢!
答案 0 :(得分:1)
不,你必须使用一个循环,它将前进到下一行二十次。
不可能做你想要的是文件结构的方式:它是一个字节序列,一个新行只是另一个字节(或Windows约定的两个字节的序列)。
答案 1 :(得分:1)
不,没有快速而神奇的方法。
<强>背景强>
文本文件记录是可变长度的。每个文本行的字符数可能不同。固定记录很容易,因为它们的长度是已知的。
要查找第N 条记录,您必须找到文本记录的开头或结尾。这通常通过搜索换行符来执行。仍然乏味。
转换为随机访问
如果多次请求数据,则记录行号及其位置的地图或字典将非常方便。使用行号,检索文件位置,然后将文件指针设置为给定位置。
内存映射文件
如果有足够的内存,则可以读取文件并将其存储在内存中。
但是,仍然需要搜索新行并计算它们以找到第X行。
<强>摘要强>
第一次没有快速查找文件中文本行开头的方法。无论如何,必须搜索文本以获取新行并计算新行。
有一些方法可以加快这个过程,但是这些方法涉及一次或多次读取文件。行号到文件位置的映射很快,但需要初始扫描。将文件加载到内存(内存映射)需要将文件读入内存(首先读取)然后搜索内存;此外,操作系统可能只加载请求的文件部分,而不是整个文件。