输入输出流4

 

二进制文件以基本类型数据在内存的二进制表示形式存放数据,不对写入或读出进行格式转换。

二进制文件的读写方式由程序控制。

打开二进制文件用binary方式。

二进制文件是随机存储的。

 

随机访问流:

流的状态表示:流的内容,长度和操作位置。

istream类操作流读指针的成员函数:

istream & istream :: seekg(long pos);

作用 读指针从流的起始位置向后移动由pos指定字节。

istream & istream :: seekg(long off, ios::seek_dir);

作用 读指针从流seek_dir的位置移动off指定字节。

 

ios::seek_dir值:

cur

相对于当前读指针所指定的当前位置

beg

相对于流的开始位置

end

相对于流的结尾处

enum ios::seek_dir{beg = 0;cur = 1;end = 2};

 

istream & istream :: tellg();

作用 返回读指针当前位置值。

 

例子:

istream  input ;

    ……

input . seekg ( - 10 , ios :: cur ) ;

//读指针位置以当前位置为基准,向前移动10个字节。

input . seekg ( 10 , ios :: cur ) ;

//读指针位置以当前位置为基准,向后移动10个字节。

input . seekg ( -10 , ios :: beg ) ;

//读指针从流开始位置向后移动10个字节。

input . seekg ( 10 , ios :: end) ;

//读指针位置以流尾为基准,向前移动10个字节。

 

ostream 类操作流泻指针的成员函数。

 

ostream & ostream :: seekp(long pos);

作用 写指针从流起始位置向后移动指定pos字节

ostream & ostream :: seekp(long off , ios::seek_dir);

作用 写指针从流的seek_dir位置移动off个字节

ostream & ostream :;tellp();

作用 返回当前写指针所在的位置值。

 

适合二进制操作的成员函数:

istream类中三个操作字节数据的成员函数

    istream & istream :: get(char &c);

        作用 从流中提取一个字节数据,更新对象c。

    int istream :: get();

        作用 函数值返回流中一个字节。

    Istream & istream :: read(char *buf,int n);

        作用 从流中提取n个字节数据,更新对象buf。

 

ostream 类中两个操作字节数据成员函数

    ostream & ostream ::put(char c);

        作用 向流插入一个字节数据.

    ostream & ostream :: write(char *buf,int n);

        作用 向流中插入对象buf,由第二个参数指定数目字节数据。

 

例:#include <iostream> #include <fstream> using namespace std;

void main()

{

       char chararr[30],inchar[30];

        cout << "请输入" << endl;

        cin >> chararr;

 

        //写

        ofstream out("data.dat", ios::out|ios::binary);

        out.write(chararr, 30);

        out.close();

 

        //读

        ifstream in("data.dat", ios::in | ios::binary);

        in.read(inchar, 30);

        cout << "从二进制文件读取出来的:" << inchar << endl;

        in.close();

}

运行结果:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值