我正在练习文件阅读,这就是我制作这个'Hex editor'的原因,它使用read函数将文件复制到内存中。
ifstream iFile(argv[1],ios::ate, ios::binary);
int sizea=iFile.tellg();
char* file=new char[sizea];
iFile.seekg(0);
iFile.read(file,sizea);
cout << iFile.gcount();
因此,对于我的testfile,sizea设置为2378,分配了内存中2378字节的正确块,但gcount()函数返回389.实际上,内存填充到第389字节并且信息正确,它是在第2378字节之前充满了CD。
读取功能是否具有某些内部限制?我无法看到我在这里做错了什么。
好的,发现问题:
ifstream iFile(argv[1],ios::ate, ios::binary);
//should be
ifstream iFile(argv[1],ios::ate | ios::binary);