阅读文本文件而不占用内存的最佳方法

时间:2012-09-07 22:04:01

标签: c++ arrays memory-management vector

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

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

我会用C ++编写代码

1 个答案:

答案 0 :(得分:0)

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

问题的经典方法是索引文件。 所以books.dat会有一个相关的authors.idx,可以说是作者和标题的列表,最好按作者排序。 然后你有titles.idx这是标题和书籍在books.dat开始的位置。 文件中的下一个标题会给你书的长度。

当然你必须维护这两个文件。如果应用程序没有编辑该文件,那么工具uo来创建所需的索引将是一个很好的方法。

相关问题