我正在练习文件读取,这就是为什么我制作了这个“十六进制编辑器”,它使用读取功能来复制内存中的文件。
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();
所以对于我的测试文件,sizea 设置为 2378,在内存中分配了 2378 字节的正确块,但 gcount() 函数返回 389。确实,内存被正确信息填满到第 389 个字节并且它充满了 CD s 直到第 2378 个字节。
读取功能是否有某种内部限制?我看不出我在这里可能做错了什么。
好的,发现问题:
ifstream iFile(argv[1],ios::ate, ios::binary);
//should be
ifstream iFile(argv[1],ios::ate | ios::binary);