关于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