我希望能够了解在C++中如何读取二进制文件。以下是我的代码:
我认为如果我用cout输出我的缓冲区,我会得到二进制结果,但事实并非如此。
我的输出是: ˙Ř˙á6Exif
如果我读取文本文件,则以正常形式显示文本,而不是二进制。显然,我的逻辑在这里是错误的。如何将文件读入缓冲区,使其包含二进制值?
顺便说一句,我正在为实现Shannon-Fano算法而做这个,如果有人对读取二进制文件有任何建议,我将不胜感激。
int main() {
ifstream ifd("input.png",ios::binary |ios::ate);
int size = ifd.tellg();
ifd.seekg(0, ios::beg);
vector<char> buffer;
buffer.reserve(size);
ifd.read(buffer.data(), size);
cout << buffer.data();
return 0;
}
我认为如果我用cout输出我的缓冲区,我会得到二进制结果,但事实并非如此。
我的输出是: ˙Ř˙á6Exif
如果我读取文本文件,则以正常形式显示文本,而不是二进制。显然,我的逻辑在这里是错误的。如何将文件读入缓冲区,使其包含二进制值?
顺便说一句,我正在为实现Shannon-Fano算法而做这个,如果有人对读取二进制文件有任何建议,我将不胜感激。
image.png
,其中(大概)包含二进制编码的图像数据(也就是红/绿/蓝强度级别的数组或类似的东西)。 - Galikios::binary
打开文件,可以确保不会发生任何文本转换。 - Pavel P