8

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

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};

在输出文件中,我在 和 之间得到一个虚假0x0D的。在要打印之前,我在调试模式下检查了数组并且它没有改变。请告诉我你对这个问题的看法。0x090x0A

4

1 回答 1

21

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

以二进制模式打开您的流:

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

然后不应执行行结束转换。

无论如何,这通常被认为是一个好主意,因为在文本模式下流可能会奇怪地刷新。

于 2011-03-02T21:12:05.980 回答