用C++读取12-15GB ASCII文件的最佳方法

fob*_*122 3 c++ memory-management file

我试图计算一个巨大的文件中的行数.这个ASCII文件大小在12-15GB之间.现在,我正在使用readline()的内容来计算文件的每一行.但当然,这是非常缓慢的.我也尝试使用seekg()和tellg()实现较低级别的读取,但由于我的文件大小,我无法分配足够大的数组来存储每个字符以运行'\n'比较(我有8GB的内存).阅读这个荒谬的大文件会有什么更快的方法?我在这里看了很多帖子,大多数人似乎没有32位系统限制的问题,但在这里,我认为这是一个问题(如果我错了,请纠正我).

此外,如果有人可以推荐我一个很好的方法来分割这么大的东西,这也会有所帮助.

谢谢!

Bil*_*eal 6

不要尝试一次读取整个文件.如果你在计算行数,只需读取给定大小的块.几MB应该是合理的缓冲区大小.