C/C++输出流写文件的一点误区
来源:互联网 发布:工人阶级 知乎 编辑:程序博客网 时间:2024/05/22 12:07
先看下面的代码:
#include <fstream>
#include <windows.h>
using namespace std;
int main(int argc, char* argv[])
{
ofstream of;
of.open("d://temp");//文件temp
WORD a = 0x1234;
of.write((char*) &a, sizeof(WORD));
of.close();
}
最后写入文件的结果是:34 12
如果把WORD a = 0x1234;改为WORD a = 0x0a34;
输出的结果是:34 0d 0a
为什么不是34 0a 而是34 0d 0a
因为of.open("d://temp");是默认按字节流来打开文件,而微软操作系统下对字节 0a 换行(/n)会处理成
0d 0a回车换行(/r/n),所以结果是34 0d 0a。
解决办法是:用二进制流来打开文件即,
of.open("d://temp",ios_base::out | ios_base::binary);
(经过实践发现C语言下的fopen等文件处理函数和上面的一样)
- C/C++输出流写文件的一点误区
- C++:今天写的一点小程序
- 【C++】 文件输出流
- C/C++ 的误区
- 写文件(C/C++)
- 使用Javah 生成C/C++头文件的误区
- 使用Javah 生成C/C++头文件的误区
- 使用Javah 生成C/C++头文件的误区
- 使用Javah 生成C/C++头文件的误区
- 使用javah生成C/C++头文件的误区
- 使用Javah 生成C/C++头文件的误区
- 使用Javah 生成C/C++头文件的误区
- 关于利用数组名获取数组大小的一点误区 - [C&CPP]
- c语言学习的误区
- C++Vector的使用误区
- C++Vector的使用误区
- c++Vector的使用误区
- C++Vector的使用误区
- ACM ZJU 1808
- 建议旅游学校开办“旅游电子商务专业”或“旅游电子商务课程”
- 初次写东西
- C# 访问AD中用户信息的几个操作
- MySQL中的时间日期函数
- C/C++输出流写文件的一点误区
- 读Defective C++随笔 3
- 增强Eclipse ,MyEclipse 的代码提示功能
- 程序员内功修炼序列
- 利用多线程技术实现线程之间的通信
- Radio组件
- 存储过程的教程
- 如何手动删除windows服务
- ZJU2680 - Clock 任意时刻时钟夹角