Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么ofstream在0x0A之前插入0x0D字节? 我使用C++代码> OfStfFuT(“文件名”)输出一个无符号字符数组;代码> 但它在两者之间产生了一个虚假的角色。这是造成问题的代码部分: for(int i = 0; i < 12; i++) fout << DChuffTable[i];_C++_Ofstream - Fatal编程技术网

为什么ofstream在0x0A之前插入0x0D字节? 我使用C++代码> OfStfFuT(“文件名”)输出一个无符号字符数组;代码> 但它在两者之间产生了一个虚假的角色。这是造成问题的代码部分: for(int i = 0; i < 12; i++) fout << DChuffTable[i];

为什么ofstream在0x0A之前插入0x0D字节? 我使用C++代码> OfStfFuT(“文件名”)输出一个无符号字符数组;代码> 但它在两者之间产生了一个虚假的角色。这是造成问题的代码部分: for(int i = 0; i < 12; i++) fout << DChuffTable[i];,c++,ofstream,C++,Ofstream,在输出文件中,我得到一个介于0x09和0x0A之间的伪0x0D。在打印阵列之前,我在调试模式下检查了阵列,并且没有更改。请告诉我您对这个问题的看法。您的流是以文本模式打开的,由于0x0A是换行符(LF),您的流正在将其转换为0x0D0x0A,即CR/LF 以二进制模式打开流: std::ofstream fout("filename", std::ios_base::out | std::ios_base::binary); 则不应执行行结束转换 这通常被认为是一个好主意,因为在文本模式下,流

在输出文件中,我得到一个介于
0x09
0x0A
之间的伪
0x0D
。在打印阵列之前,我在调试模式下检查了阵列,并且没有更改。请告诉我您对这个问题的看法。

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

以二进制模式打开流:

std::ofstream fout("filename", std::ios_base::out | std::ios_base::binary);
则不应执行行结束转换


这通常被认为是一个好主意,因为在文本模式下,流可能会出现奇怪的w.r.t.刷新。

非常感谢,我没有想到这个问题。尽管我怀疑这个问题在linux中不会发生。对吗?@raven:同样的情况也适用,但由于Unix系统使用“\n”作为行尾,因此您确实不会注意到任何症状。不过,它仍然是坏代码。:)
std::ofstream fout("filename", std::ios_base::out | std::ios_base::binary);