C++ - 随机访问多个文本文件的行
C++ - Randomly access lines of several text files
我有 10 个文本文件(名为 file0.txt 到 file9.txt),具有任意长度和行数。我需要随机选择一个文件,从该文件中随机访问 1-3 行,处理它们并重复,直到所有文件的所有行都已处理完毕。这只需要执行一次。为了解决这个问题,假设"过程"意味着打印行。有没有人对如何在不将所有文本文件加载到内存中的情况下执行此操作有任何建议?
实际上没有任何方法可以"随机访问"(从某种意义上说,您可以随机访问矢量)文本文件中的行,因为查找行的唯一方法是线性搜索文件以查找换行符。这意味着您至少需要流式传输一次文件才能访问行,即使您没有将它们完全加载到内存中。
您可以通过遍历所有文件一次以计算其中的行数,然后再次遍历它们以拉出随机选择的行来实现您所描述的内容。不过,我不确定这样做有什么好处。你真正想实现的目标是什么?
您可以
扫描文件一以索引行开始的位置,并将其保存在内存中(如果您需要多次执行同一文件,甚至可以保留该文件)。一旦你有了它,你可以寻找行的开头,并在处理之前阅读它直到换行符/EOF。
建议:
1/复制文件2/读取时擦除一行3/更新文件中的行数这样,您可以随机选择存在且尚未读取的行。
大量的读/写...效率不高
相关文章:
- 文本文件中的单词链表
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何在c++中从文本文件中逐行读取整数
- 从文本文件中读取时钟时间和事件时间并进行处理
- 如何从文本文件中读取值和数组
- 如何在C++中确定文本文件中的元素是字符还是数字
- C++试图读取一个文件并输出到另一个文本文件
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 已修改的LinkedList未在文本文件本身中更新
- C++文本文件的获取线
- 为什么C++的文件 I/O 在读取文本文件时忽略初始空行?我怎样才能让它不这样做?
- 打印逐行存储的文本文件
- C++文本文件输入