描述:
在向文件中写数据的时候,在字符串的末尾加了一个\r\n,原本的意思是对应回车换行,可惜将文件用二进制打开一看发现\r\n
对应这0x0d 0x0d 0x0a,为什么会变成三个字节呢,不得其解,难道win32下面\n就是指回车换行?
解决:
如下字符串:
infoFileComment ="[ComtradeEvent]\n;事件通道,0-电压,1-电流\n";
如下写文件:
infoFile.write(infoFileComment.c_str(),infoFileComment.size());
在程序中调试,会发现字符串infoFileComment中\n对应的就是0x0a,为何写到文件中就会变成0x0d 0x0a呢?
原来,文件的打开方式使用文本方式打开的:
0A(\n)在ASCII中为换行符,而windows下的换行符用0D0A(\r\n)表示,而我们的文件在打开时指定的打开
方式fopen("out.dat","w")是以文本方式打开,所以在输出0×0A时自动被windows替换成0×0D 0×0A了,以
二进制模式打开文件fopen("out.dat","wb"),\n就会对应0x0a。
在向文件中写数据的时候,在字符串的末尾加了一个\r\n,原本的意思是对应回车换行,可惜将文件用二进制打开一看发现\r\n
对应这0x0d 0x0d 0x0a,为什么会变成三个字节呢,不得其解,难道win32下面\n就是指回车换行?
解决:
如下字符串:
infoFileComment ="[ComtradeEvent]\n;事件通道,0-电压,1-电流\n";
如下写文件:
infoFile.write(infoFileComment.c_str(),infoFileComment.size());
在程序中调试,会发现字符串infoFileComment中\n对应的就是0x0a,为何写到文件中就会变成0x0d 0x0a呢?
原来,文件的打开方式使用文本方式打开的:
0A(\n)在ASCII中为换行符,而windows下的换行符用0D0A(\r\n)表示,而我们的文件在打开时指定的打开
方式fopen("out.dat","w")是以文本方式打开,所以在输出0×0A时自动被windows替换成0×0D 0×0A了,以
二进制模式打开文件fopen("out.dat","wb"),\n就会对应0x0a。