1

我正在练习文件读取,这就是为什么我制作了这个“十六进制编辑器”,它使用读取功能来复制内存中的文件。

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);
4

0 回答 0