C++二进制文件写操作

时间:2022-04-21 21:38:50
#include<fstream.h>
main()
{
int a[10]={0};
for(int i=0;i<9;i++)
{
a[i
+1]=a[i]*10+i+1;
cout
<<a[i]<<endl;
}

ofstream rs(
"ok2002com.bin",ios::binary);//打开二进制文件ok2002com.bin;注意:打开二进制文件时,访问模式设置为:ios::binary

for(i=0;i<9;i++)
{
rs.write((
char*)(&a[i]),sizeof(a[i]));//将数据写到二进制文件ok2002com.bin

cout
<<"rs.tellp("<<i<<")="<<rs.tellp()<<endl;//二进制形式输出指针当前位置

}

rs.close();
cin
>>i;
}
C++二进制文件写操作

  

*运行结果:
-----------------------------
0
1
12
123
1234
12345
123456
1234567
12345678

rs.tellp(0)=2, rs.tellp(0)=4
rs.tellp(1)=4, rs.tellp(1)=8
rs.tellp(2)=7, rs.tellp(2)=12
rs.tellp(3)=11, rs.tellp(3)=16
rs.tellp(4)=16, rs.tellp(4)=20
rs.tellp(5)=22, rs.tellp(5)=24
rs.tellp(6)=29, rs.tellp(6)=28
rs.tellp(7)=37, rs.tellp(7)=32
rs.tellp(8)=46, rs.tellp(8)=36
-----------------------------

●文本方式存储与二进制方式存储的一些区别:

1、文本方式存储
每个数据在文件中的长度不等,所占的字节数与数据的位数有关,数据间必须用分隔符(如空格)隔开;

2、二进制方式存储
每个数据在文件中的长度相同,所占字节数仅与数据类型有关,数据间不需要加入分隔符。

●二进制读写文件的优点
(1)便于对数据进行随机访问;
(2)存取效率高;
(3)可以对文件进行压缩处理;
(4)存储密度大;
(5)数据文件便于保密;

●二进制读写文件需了解:
(1)二进制读写文件兼容性低;
(2)二进制读写文件,不能用字处理程序进行阅读、编辑或修改;

●到底用文本方式存储较好?还是用二进制方式存储较好?
通常将文本信息以文本文件方式存储,而将数值信息以二进制方式存储。

●什么是文本信息?什么是数值信息?
文本信息:电话号码、新闻、邮政编码等等;共同属性:数字不参与计算;
数值信息:产品销售价格、公司总资产、公司年纯收入等等。共同属性:数字参与计算;
需注意:文本信息与数值信息没有绝对的界线,二者可能会相互转换,如:仅仅公布公司季度获利情况,可存储为文本信息,因为其中的金额此次不用于运算。

●C++中tellp()函数与tellg()函数
tellp()函数用来获取“输出指针”的当前位置(从文件首到当前位置的字节数);
tellg()函数用来获取“读入指针”的当前位置(从文件首到当前位置的字节数)。