Gra*_*oob 6 c++ file-io visual-studio
我在内存中的char []缓冲区中有一个jpeg图像,我需要做的就是将其完全按原样写入磁盘.现在我正在这样做
ofstream ofs;
ofs.open(filename);
ofs.write(buffer, bufferLen);
ofs.close();
Run Code Online (Sandbox Code Playgroud)
但是图像没有正确显示,到处都是随机的黑白条纹.在十六进制查看器中将图像与原始图像进行比较后,我发现当它认为我正在编写换行符时,ofstream正在修改数据.0x0A出现在原始位置的任何地方,ofstream写入两个字节:0x0D0A.我必须假设ofstream打算只从LF转换为CRLF,有没有一种标准的方法让它不这样做?
你应该设置文件模式,binary
当你打开它:
std::ofstream file;
file.open("filename.jpg", std::ios_base::out | std::ios_base::binary);
Run Code Online (Sandbox Code Playgroud)
这样,流不会尝试将换行符调整为原生文本格式.
尝试打开ofstream作为二进制文件.这样的事情应该有效:
ofstream ofs;
ofs.open(filename, ios::out | ios::binary);
ofs.write(buffer, bufferLen);
ofs.close();
Run Code Online (Sandbox Code Playgroud)