【发布时间】:2013-08-30 04:15:06
【问题描述】:
我正在编写一个程序来生成位图图像。当我测试它时,我发现 C++ 正在写入额外的字节(在看似随机的位置),从而抵消了我所有的字节(随后弄乱了图像)。我从数组写入文件。我计算出数组的完整内容,它们是完美的,但是总是写入额外的字节。通过使用 ios::binary 标志打开文件已解决此问题。
如果我从完全相同的数组输出,为什么打开带有和不带有 ios::binary 标志的文件很重要。
使用 Code::Blocks 12.11,使用 C++0X 的默认编译器
【问题讨论】:
-
你看数组内容的bytes了吗?例如,您的文本输出流可能会将 CR 转换为 CR/LF。我的问题是“为什么我要尝试将二进制数据写入文本输出流并期望它工作?
-
Inspired 给出的答案与我的场景完美匹配.. 当它们进入 ofstream 时,我会查看各个字节(制作我自己的缓冲区)。
-
优秀。它不是一个罕见的打嗝。很高兴你找到了答案。