关于C++中二进制文件的一些感想

针对2进制写代码前需要明确


1.要有这样的思想:打开文件,读写文件,关闭文件。


2.打开文件 流类  对象名 (文件名,方式)还有种(下面代码可知)。


3.写文件:设对象名为 f ( 例如ifstream  f  ),则

f.write((char*)&i,sizeof (int))<——这是固定格式,记住。还有(char*)&i是强制类型转换。

读文件:

f.read((char*)&i,sizeof(int))


4.读写文件时,指针一定要黏在一起:读指针黏读文件,写指针要黏写文件

例如:f,seekg(long(sizeof (int )*i));

           f.read((char*)&i,sizeof(int));

最好画出指针在图的位置,read从seekg指针读前sizeof(int)位,write从seekp指针读后sizeof(int)位。


5.关闭文件。f.close().



#include<fstream>//要声明头文件

#include<iostream>

using namespace std;

int main()

{int i,j;

fstream f;//建立文件,开通道.

f.open("d:\\data.dat",ios::out|ios::binary);//写方式打开文件

for(i=1;i<=10;i++)//循环

f.write((char*)&i,sizeof (int))//写入i的值,有内存流入文件。

f.close();//关闭文件

//下面要修改文件了

f.open("d:\\data.dat",ios::out|ios::in|ios::binary) ; //要先打开文件(以读写的方式打开)

for(i=0;i<10;i++)

{f.skeeg(long(sizeof(int)*i)) ; //从流开始位置开始,后移sizeof(int)*i 位

f.read((char*)&j,sizeof(int)) ; //从文件读出(向前读)sizeof(int)位并写入内存中的变量j

if (j%2)  //若j为奇数

{j+=10;

f.seekp(-long(sizeof(int)),ios::cur);//从当前的位置开始,向前移动**位(现在是在文件)

f.write((char*)&j,sizeof(int)); //写入修改后的数据到文件中

}

}

f.seekg(long(sizeof(int)*10));//把流指针移到文件尾

for(i=91;i<=95;i++) //添加五个数据

f.write((char*)&j,sizeof(int));//把i的值写入文件

//下面是吧文件的数据输出到显示器,要用到cout

f.seekg(0,ios::beg) // 流指针指向文件头,其实ios::beg可省略

for(i=0;i<15;i++) //遍历

{f.read((char*)&j,sizeof(int));

cout<<j<<" ";//在显示器显示j的值;

}

cout<<endl;

f.close();//关闭文件

}


运行结果

11 2 13 4 15 6 17 8 19  10 91 92 93 94 95








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值