C++ 使用fread读取位图会提前停止

C++ 使用fread读取位图会提前停止,c++,bitmap,fread,C++,Bitmap,Fread,我正在尝试使用fread读取.bmp文件,但它似乎无法读取整个文件。这个问题的所有解决方案都是人们忘记添加b标志以二进制方式打开文件。然而,我已经做到了: _wfopen_s(&filePtr, heightMap, L"rb"); 以下是我读取文件的方式: bytesRead = fread(bitmapImageData, 1, bitmapImageSize, filePtr); if(bytesRead != imageSize) { return false; }

我正在尝试使用fread读取.bmp文件,但它似乎无法读取整个文件。这个问题的所有解决方案都是人们忘记添加b标志以二进制方式打开文件。然而,我已经做到了:

_wfopen_s(&filePtr, heightMap, L"rb");
以下是我读取文件的方式:

bytesRead = fread(bitmapImageData, 1, bitmapImageSize, filePtr);
if(bytesRead != imageSize)
{
     return false; 
}
当它读取它时,它返回false,因为它没有读取整个内容。我已经正确地阅读了标题和信息,为什么它会停在这里

这是图像:


好的,我尝试了另一个图像,取而代之的是std::bad_alloc,因为当它读取图像大小时,得到的结果完全不正确…

更好的问题是,为什么不使用std::ifstream?此外,它还可以用于上载位图,以便其他人可以查看他们是否能够重现问题。您期望的结果与读取的结果之间的差异有多大?bitmapImageSize!=想象一下,图像大小。w是指宽字符吗?如果是这样,图像大小和读取的字节之间将不会有1:1的比率。另外,图像大小是以位、字节还是宽字符为单位的?我得到的和图像大小之间的差异相当大。bitmapImageSize为49152。当它结束时,字节读取是16384。关于使用宽字符,我将其改为仅使用fopen_s,但结果相同。