关于std::ofstream 写入数据到文件中出现的0D问题

关于std::ofstream 写入数据到文件中出现的0D问题

原来新写的文件比源文件多了很多‘0D’,原来ostream写文件如果没有标记ios::binary方式写入,碰到换行符(0x0A),编译器会自动转换为回车换行符(0x0D 0x0A)然后再写入文件,改成以二进制的方式写入后就OK了。

定义文件流写入的时候 std::ofstream fs(File,ios::binary)这样定义就不会每次遇到0A的时候多塞入一个0D的值进去了

 

std::ifstream 和 std::ofstream 定义写入属性代表的意义

ios::app:   以追加的方式打开文件
ios::ate:   文件打开后定位到文件尾,ios:app就包含有此属性
ios::binary:  以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文
ios::in:    文件以输入方式打开
ios::out:   文件以输出方式打开
ios::nocreate: 不建立文件,所以文件不存在时打开失败 
ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败
ios::trunc:  如果文件存在,把文件长度设为0
可以用“或”把以上属性连接起来,如ios::out|ios::binary