我正在编写一个解析器,其中,我需要从文件中读取字符。但是我将逐个字符地读取文件,如果情况不令人满意,甚至可能在中间停止读取文件。
因此,建议创建文件的ifstream并每次都寻找该位置并从那里开始读取,还是应该将整个文件读入一个流或缓冲区中,然后改为使用它?
最佳答案
如果可以,请使用内存映射文件。
Boost提供了一个跨平台的产品:http://www.boost.org/doc/libs/1_35_0/libs/iostreams/doc/classes/mapped_file.html
我正在编写一个解析器,其中,我需要从文件中读取字符。但是我将逐个字符地读取文件,如果情况不令人满意,甚至可能在中间停止读取文件。
因此,建议创建文件的ifstream并每次都寻找该位置并从那里开始读取,还是应该将整个文件读入一个流或缓冲区中,然后改为使用它?
最佳答案
如果可以,请使用内存映射文件。
Boost提供了一个跨平台的产品:http://www.boost.org/doc/libs/1_35_0/libs/iostreams/doc/classes/mapped_file.html