我正在使用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};
在输出文件中,我得到
0x0D
和0x09
之间的虚假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之前插入一个0x0D字节?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5173498/