读书人

使用ofstream写入0x0a时该函数实际写

发布时间: 2012-03-22 17:43:57 作者: rapoo

使用ofstream写入0x0a时,该函数实际写入0x0d 0x0a两个字节?
本人在写一个unicode编码转换的小软件,奇怪的是文本转换前转换后,在换行的位置总是多出来一个0x0d,经过调试发现竟然有如下现象。使用:

C/C++ code
// ofs is an ofstream object// buffer is a 1-byte dataofs.write(reinterpret_cast<char *>(&buffer), 1);

写入一个字节数据时,当buffer的字节数据为0x0a(Ascii码LF,即是换行)时,该操作实际上写入了两个字节数据,0x0d(Ascii码CR,即回车)和0x0a,不知道大家是不是有碰到过这种问题呢?
我觉得相当奇怪,如果使用这个函数的用户是在写一个二进制文件而非文本文件,那这种“自动补全换行符”的行为不就成了画蛇添足了,很有可能破坏用户的数据呀。有没有经验帝来解答一下

[解决办法]
用binary方式打开文件即可。

读书人网 >C++

热点推荐