C++输出二进制文件和文本文件

本文探讨了二进制文件与文本文件的区别,特别是在处理数字和排版符号时的不同表现。并介绍了如何通过C++编程实现二进制文件的创建,包括使用强制类型转换和写入函数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所谓二进制文件和文本文件对于字母而言没有什么不同,都是存储该字母的ASCII码值。能引起不同的是数字和一些排版用符号的格式。

  • 数字在二进制文件中会存储该数字的值,而文本文件中则首先将该数字视为字符量,并按照ASCII码表转换为新的数字再存储;
  • 排版符号的一个例子是换行符,二进制文件只是一个换行符,文本文件中则是换行符加上回车符;
    所以简单的区分方法是文本文件对每个字符都要做ASCII转换,而二进制文件只会对字母做必要的ASCII转换,对数字则是直接存储的。

下来我们来讨论如何真正的实现二进制文件的建立:
并不是我们所认为的在打开文件时设定ios::binary就可以,还要注意输出的函数:

  1. 在使用<<输出时,实际上都会转换为文本文件输出。即如果输出一个数字,先是转换为相应ASCII码值作为字符串存储。用这种方法输出二进制文件的方法就是欺骗电脑——把double,int等数组强制转换为char型数组。注意不能是单个变量,因为double一个是4字节,char是1个字节,数组转换的同时数组大小也变化使得数据不丢失,但变量在强制转换的过程中一定会损失数据。当直接转换为char,实际上未经过转化,而且输出char型变量时,也不会进行转化;这样就欺骗了<<操作符,让我们可以以char的形式输出一个数,而不用ASCII转换。实际代码如下:
             ofstream    file("E:/BaiduYunDownload/data.txt" ,ios_base::binary|ios_base::trunc);
             double a[4]={16.7,2.4,42.3,56.7};
             int i;
             if(!file.good())
             {
                         printf("Cannot open the file\n" );
                         return 0;
             }
   
             for(i=0;i<sizeof (a);i++){
                         file<<((char *)a)[i];
             }
  1. 另外一种方法是write函数,理论是一样的,都是依靠强制转换为char型变量以避免ASCII转换

转载于:https://www.cnblogs.com/sgdd123/p/7868477.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值