读取10GB二进制文件并解析每个字节而不使用boost库的最简单方法是什么?
它与流,文件,内存映射文件等混淆。
我真的只想要这样的东西:
char* buffer = read(filename, binary);
while(buffer != EOF){
//Read byte
++buffer;
}
由于文件大小,性能确实很重要。
答案 0 :(得分:1)
如果您希望顺序访问具有良好的性能(从头到尾阅读),请使用fread()
。您可以将FILE*
存储在std::shared_ptr
RAII中:
std::shared_ptr<FILE> file(fopen(...), fclose);
您可以忽略C ++流,内存映射文件,Boost等。这些都不会比fread()
更快。
答案 1 :(得分:0)
因为你不关心表现,所以
一个简单的while ifstream
循环可以一次提取一个字节:
#include <iostream>
#include <fstream>
int main(){
std::ifstream infile("file.txt");
while (infile){
//get next byte
char c;
infile.get(c);
//process byte
std::cout << c;
}
}