C++ - 随机访问多个文本文件的行

C++ - Randomly access lines of several text files

本文关键字:文本 文件 随机 访问 C++      更新时间:2023-10-16

我有 10 个文本文件(名为 file0.txt 到 file9.txt),具有任意长度和行数。我需要随机选择一个文件,从该文件中随机访问 1-3 行,处理它们并重复,直到所有文件的所有行都已处理完毕。这只需要执行一次。为了解决这个问题,假设"过程"意味着打印行。有没有人对如何在不将所有文本文件加载到内存中的情况下执行此操作有任何建议?

实际上没有任何方法可以"随机访问"(从某种意义上说,您可以随机访问矢量)文本文件中的行,因为查找行的唯一方法是线性搜索文件以查找换行符。这意味着您至少需要流式传输一次文件才能访问行,即使您没有将它们完全加载到内存中。

您可以通过遍历

所有文件一次以计算其中的行数,然后再次遍历它们以拉出随机选择的行来实现您所描述的内容。不过,我不确定这样做有什么好处。你真正想实现的目标是什么?

您可以

扫描文件一以索引行开始的位置,并将其保存在内存中(如果您需要多次执行同一文件,甚至可以保留该文件)。一旦你有了它,你可以寻找行的开头,并在处理之前阅读它直到换行符/EOF。

建议:

1/复制文件2/读取时擦除一行3/更新文件中的行数这样,您可以随机选择存在且尚未读取的行。

大量的读/写...效率不高