我在内存的char []缓冲区中有一个jpeg图像,我要做的就是完全照原样将其写到磁盘中。现在我正在做这个

ofstream ofs;
ofs.open(filename);
ofs.write(buffer, bufferLen);
ofs.close();

但是图像显示不正确,到处看起来都是乱七八糟的黑白条纹。在使用十六进制查看器将图像与原始图像进行比较之后,我发现当它认为我正在写换行符时,ofstream正在修改数据。原始显示0x0A的任何地方,ofstream都写为两个字节:0x0D0A。我必须假定ofstream打算仅从LF转换为CRLF,是否有一种标准方法可以使它不这样做?

最佳答案

打开文件时,将模式设置为二进制:

http://www.cplusplus.com/reference/iostream/ofstream/ofstream/

关于c++ - 为什么C++ ofstream write()方法会修改我的原始数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1350243/

10-12 14:35