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

所谓二进制文件和文本文件对于字母而言没有什么不同,都是存储该字母的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];
             }
  2. 另外一种方法是write函数,理论是一样的,都是依靠强制转换为char型变量以避免ASCII转换
时间: 2024-08-03 08:01:17

C++输出二进制文件和文本文件的相关文章

二进制文件与文本文件

1.C语言中缺省是按照文本方式打开文件. 2.二进制文件和文本文件 (1)文件是在计算机内存中以二进制表示的数据在外部存储介质上的另一种存放形式. (2)文件通常分为二进制文件和文本文件. (3)二进制文件是包含在 ASCII 及扩展 ASCII 字符中编写的数据或程序指令的文件.一般是可执行程序.图形.图象.声音等等文件. (4)文本文件(也称为ASCII文件):它的每一个字节存放的是可表示为一个字符的ASCII代码的文件.它是以 "行"为基本结构的一种信息组织和存储方式的文件,可用

C语言中二进制文件和文本文件的区别

所有的信息在内存中都是以二进制的形式进行存储的,这说明了二进制文件和文本文件不是在硬件上进行区分的. 二进制和文本文件因为操作系统的不同而不同,毕竟不同的人实现同一问题的思路也不是完全一样的嘛,首先说一下比较简单的那个:在Linux环境中,二进制文件和文本文件不进行区分.也就是说这两种方式在Linux操作系统下的实现机制是一样的:在OS X下面,太高大上了,用不到,所以也不关心:在Windows下面,二进制和文本文件是有区别的,下面就主要说明一下两者在Windows环境下的区别以及对应的文件操作

二进制文件与文本文件的差异

1. 文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的.这两者只是在编码层次上有差异. 简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等.二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码). 从上面可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8),基于字符嘛,每个字符在具体编码中是固定的,ASCII码

输出是一个文本文件,每一行第一个数字式行标,第二个数字是输入文件中每一行除行标外数字的平均值

有时候你会遇到这样的问题:你有一个表格,给出了每个人在十二月,一月和二月的收入. 表格如下: 姓名 一月 二月 三月 楚乔     200   314   3500 宇文玥     2000  332   2300 烟熏柿子    6000  333   680 淳儿    5000  333   789 洛河     30    12    2900 现在需要知道每个人这三个月的收入平均值,那么你就需要将表格中一行代表收入的数字相加除以月数.下面请编写MR程序解决这个简单的问题. 输入只包含一

linux下将编译错误输出到一个文本文件

command > filename 把把标准输出重定向到一个新文件中 command > > filename 把把标准输出重定向到一个文件中(追加) command 1 > fielname 把把标准输出重定向到一个文件中 command > filename 2> &1 把把标准输出和标准错误一起重定向到一个文件中 command 2 > filename 把把标准错误重定向到一个文件中 command 2 > > filename 把把

网络传输-文本文件和二进制文件的区别

1. 文本文件和二进制文件的定义 # 计算机在物理内存上面存放的都是二进制,所以文本文件和二进制文件的主要区别是在逻辑上的而不是物理上的.而从文件的编码方式来看,文件可以分为文本文件和二进制文件.文本文件是基于字符编码的文件,常见的有ASCII.Unicode等,二进制文件是基于值编码的文件,可以看成是变长编码,你可以根据自己的需要,决定多少个比特代表一个值. # 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种. # (1)ASCII文件也称为文本文件,这种文件在磁盘中存放时

二进制文件文本文件和二进制数据

我们知道计算机是用二进制来做运算处理的,所以所有存储在计算机里面的东西都是二进制的. 我也知道这句话,但为什么总是听到别人说"二进制"文件和"文本"文件呢? 按照上面那句话来说计算机里面的都应该是二进制的啊! 底层存储的都是二进制的"数据",而不是二进制的文件. 列举一个二进制文件如下: 00000000h:0F 01 00 00 0F 03 00 00 12 53 21 45 58 62 35 34; .........S!EXb54 0000

文本文件与二进制文件区别

计算机数据的存储在物理上都是二进制的,所以文本文件和二进制文件的区别并不是在于物理存储上. 主要在于编码方式上,文本文件是基于字符编码的文件常见编码有ascii,unicode,utf-8等,而二进制是基于值编码的文件 文本文件的定长编码(当前也有非定长如utf-8),二进制文件是边长编码,多少个bit代表一个值完全由你来决定,这样的编码方式导致二进制会更节省空间 如:00000000_00000000_00000000_00000001  用ascii编码方式在记事本中显示则为 NULL_NU

Eclipse \ MyEclipse \Scala IDEA for Eclipse里如何将控制台console输出的过程记录全程保存到指定的文本文件(图文详解)

不多说,直接上干货! 问题详情 运行Java程序的时候,控制台输出过多,或者同时运行多个Java程序,输出结果一闪而过的时候,可以考虑将将控制台输出,改为输出到文本文件.无须修改Java代码,引入流这么复杂的,可以直接让Eclipse \ MyEclipse \Scala IDEA for Eclipse将控制台的输出打印到文本文件. 解决办法 具体如下操作: 在Eclipse中,选择目标的Java文件,右击,选择Run->Run Configurations->Common->Stan