1

阅读文本文件的最佳方法是什么,例如我有一个包含数百本书的文本文件。在这些书籍下将是作者等,一些作者可以拥有多本书。

我将如何编写这个程序,以便在搜索或查找一条信息时它不会将整个文件读入内存(数组、向量等)。假设我输入作者姓名,它会找到他们写的每一本书。所以我很好奇做到这一点的最佳方式和最有效的方式。

我会用 C++ 编写代码

4

1 回答 1

0

基本答案是 FileStream。因此,您在磁盘上的文件中寻找一个位置,然后从那里读取。但是,此时您将非常受磁盘 io 限制,并且您的文件必须符合某种结构,除非您每次想要查找某些内容时都必须从头读取到目标。即它必须按作者顺序排列,即使可以接受,这也可能意味着通过它搜索其他任何东西都会非常低效。

解决问题的经典方法是索引文件。因此,books.dat 将是一个相关的 authors.idx,它可以说是作者和标题的列表,最好按作者排序。然后你有titles.idx,它是标题和书在books.dat中开始的位置。文件中的下一个标题将为您提供书籍的长度。

当然,您必须维护这两个文件。如果应用程序不编辑文件,那么使用 uo 工具来创建您需要的索引将是一个不错的方法。

于 2012-09-07T23:04:39.833 回答