我正在使用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
。我在调试模式中检查了数组,然后才开始打印并且没有更改。请告诉我你对这个问题的看法。
答案 0 :(得分:21)
您的信息流正在以文字模式打开,由于0x0A
是换行(LF)字符,您的信息流正在转换为0x0D
0x0A
,即CR / LF。
以二进制模式打开您的信息流:
std::ofstream fout("filename", std::ios_base::out | std::ios_base::binary);
然后不应该执行行结束转换。
无论如何,这通常被认为是一个好主意,因为流可以变得奇怪了w.r.t.在文本模式下刷新。