gpt4 book ai didi

c++ - Ofstream::write 写入额外字节,尽管有显式源数组

转载 作者:行者123 更新时间:2023-11-30 01:57:37 26 4
gpt4 key购买 nike

我正在编写一个程序来生成位图图像。当我测试它时,我发现 C++ 正在写入额外的字节(在看似随机的位置),从而抵消了我所有的字节(随后弄乱了图像)。我从数组写入文件。我计算出数组的完整内容,它们是完美的,但是总是写入额外的字节。这是通过使用 ios::binary 标志打开文件来解决的。

如果我从完全相同的数组输出,为什么打开带有和不带有 ios::binary 标志的文件会有影响。

使用 Code::Blocks 12.11,带有 C++0X 的默认编译器

最佳答案

因为您很可能使用的是 Windows,并且有一些关于如何在文本 文件中表示某些特殊字符(例如换行符)的约定:例如\n 在 Windows 中被转换为 \r\n,读取 0x1E ("EOF") 会引发文件结束标志。如果您以二进制(非文本)模式打开文件,则不会发生这些转换。

即使您不使用 Windows:始终对二进制数据使用二进制模式,这是一种可移植的方式。

关于c++ - Ofstream::write 写入额外字节,尽管有显式源数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18520105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com