阅读文本文件的最佳方式是什么?例如,我有一个包含数百本书的文本文件。在这些书下将是作者等一些作者可以有多本书。
我将如何编写这个程序,以便它在搜索或查找信息时不会将整个文件读入内存(数组、 vector 等)。假设我输入作者姓名,它会找到他们写的每一本书。所以我很好奇最好的方法和最有效的方法。
我会用 C++ 编写代码
最佳答案
基本答案是 FileStream。因此,您在磁盘上的文件中寻找一个位置,然后从那里读取。但是,此时您将非常受磁盘 io 限制,并且您的文件必须符合某种结构,除非您希望每次查找内容时都必须从头到尾读取。也就是说,它必须按照作者的顺序,即使可以接受也可能意味着通过它搜索其他任何东西都将非常低效。
解决您问题的经典方法是索引文件。 所以 books.dat 将是一个相关的 authors.idx,它会说是作者和标题的列表,最好按作者排序。 然后你有 titles.idx,它是书名和书在 books.dat 中的开始位置。 文件中的下一个标题将为您提供本书的长度。
当然,您必须维护这两个文件。如果应用程序不编辑文件,那么使用工具 uo 来创建您需要的索引将是一个不错的方法。
关于c++ - 在不占用内存的情况下读取文本文件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12326008/