按二进制进行读写操作

作者在 2010-05-13 13:27:24 发布以下内容
#include "iostream.h"
#include "fstream.h"
#include "stdlib.h"
void main(void)
{
 //打开制定的文件
 fstream file("D:\\Personal\\桌面\\f1.txt",ios::in|ios::out|ios::binary);
 if(!file)
  {
   cout<<"没有打开f1.txt\n";
   abort();//用异常终止进程
  }
 for(int i=0;i<15;i++)  //打开文件后先用write函数写入15个数字
 {
  file.write((char *)&i,sizeof(int));
  //write函数,将指定长度的字符串输出到指定流
 }
 //用tellp函数记录下当前写指针的位置
 streampos pos=file.tellp();  //返回一个long型值,用来表示当前指针的位置相距流开始位置的字节数
 cout<<"Current byte number : "<<pos<<endl;  //显示指针距离流开始的字节数
 //显示的是60
 for(i=15;i<45;i++)  //又使用write函数向文件写入30个数字
 {
  file.write((char *)&i,sizeof(int));
  //write函数,将指定长度的字符串输出到指定流
 }
 //使用seekp函数将写指针定位于前面记录下的位置,即写指针指向第一个写的15个数字的后面位置
 file.seekg(pos);   //把流指针设置到POS位置
 file.read((char *)&i,sizeof(int));//每次读取1个整形的长度,基本整形是2个字节
 //read函数从指定流中读取制定长度的字节数,存储到指定的字符串中
 cout<<"The date stored is : "<<i<<endl; //输出读取到的数据
 //显示的是15
 file.seekp(0,ios::beg); //设置文件指针位于相对于流的开始位置偏移0字节长度
 for(i=80;i<100;i++)
 {
  file.write((char *)&i,sizeof(int));
  //从指定流读取制定长度的字节存储到制定字符串
 }
 file.seekp(pos);   //设置指针指向的位置
 file.read((char *)&i,sizeof(int));//从指定流中读取指定长度的字符串
 cout<<"The date stored is : "<<i<<endl; //输出读取到的数据
 //显示的是95
 file.seekp(20,ios::cur);  //设置指针位置为相对于当前位置后移20字节
 file.read((char *)&i,sizeof(int));//从指定流中读取指定长度的字符串
 cout<<"The date stored is : "<<i<<endl; //输出读取到的数据
 //显示的是21
 cout<<"Current byte number : "<<file.tellp()<<endl;
 //显示的是88
 //输出显示当前指针所在的位置
 //使用close()函数关闭文件
 file.close();
}
c/c++/VC6.0 | 阅读 976 次
文章评论,共0条
游客请输入验证码