我正在使用ofstream fout("filename");在C++中输出无符号字符数组
但它会在两者之间产生虚假字符。这是导致问题的代码部分:

for(int i = 0; i < 12; i++)
fout << DChuffTable[i];

这是数组的定义:
unsigned char DChuffTable[12] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B};

在输出文件中,我得到0x0D0x09之间的虚假0x0A。我在 Debug模式下检查了数组,然后才将其打印出来并且没有更改。请告诉我您对这个问题的看法。

最佳答案

您的流正在以文本模式打开,并且由于0x0A是换行(LF)字符,因此您的流正在将其转换为0x0D 0x0A,即CR/LF。

以二进制模式打开流:

std::ofstream fout("filename", std::ios_base::out | std::ios_base::binary);

然后,不应执行行尾转换。

无论如何,这通常被认为是一个好主意,因为流可能会使w.r.t.变得奇怪。在文本模式下冲洗。

关于c++ - 为什么ofstream在0x0A之前插入一个0x​​0D字节?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5173498/

10-11 23:18