c++ - 为什么 C++ ofstream write() 方法会修改我的原始数据?

标签 c++ visual-studio file-io

我在内存中的 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/

相关文章:

c++ - 当到达 main() 时,由全局变量的构造函数初始化的静态模板变量为空

c++ - 函数参数中的Qt智能指针

c++ - 软件模型设计

visual-studio - 在 Visual Studio 2013 中调试单元测试非常慢

c# - 在 C# 中添加多行注释时,如何禁用 Visual Studio 中的自动星号?

c++ - 自定义哈希表实现 - 将字符串映射到整数时出现内存错误

asp.net - ADO.NET/WCF 数据服务的项目设置

c++ - 追加二进制文件

java - 如何正确处理来自 close() 的 IOException

json - Windows上带有utf8编码文件的node.js readfile错误