二进制文件的使用

来源:互联网 发布:vf表单关于淘宝设计 编辑:程序博客网 时间:2024/06/02 02:15

二进制文件的使用

1、用成员函数“read”“write”读写二进制文件

           istream& read(char *buffer,int len)

           ostream& write(const char *buffer,int len)

       例如:

           a.write(p1,50);

           b.read(p2,30);

------------------------------------------------------------------------

2、实例:将整数写入二进制文件(08_008_1.cpp)

//二进制文件-基本操作-写入文件

#include <iostream>

#include <fstream>

using namespace std;

 

int main()

{

int a=20000;

int b=30;

ofstream file("f8.dat",ios::binary);

if(!file)

{

cout<<"file error!"<<endl;

exit(1);

}

else

{

file.write((char*)&a,sizeof(a));

file.write((char*)&b,sizeof(b));

file.close();

}

// cout<<sizeof(a)<<endl;

// cout<<a<<endl;

return 0;

}

说明:&a是整数a的地址,但它是指向整数的指针,用(char*)将其强制转换为字符指针

-------------------------------------------------------------------------------

3、实例:将上例中文件中的二进制数据读出来,并在显示器上显示(08_008_2.cpp)

//二进制文件-基本操作-从文件读出

#include <iostream>

#include <string>

#include <fstream>

using namespace std;

 

int main()

{

int a,b;

ifstream file("f8.dat",ios::binary);

if(!file)

{

cout<<"file error!"<<endl;

exit(1);

}

else

{

file.read((char*)&a,sizeof(a));

file.read((char*)&b,sizeof(b));

file.close();

}

cout<<a<<endl;

cout<<b<<endl;

return 0;

}

-------------------------------------------------------------------------------

4、与二进制文件指针有关的流成员函数

   对二进制文件的位置标记进行控制

   (1)gcount()

        得到最后一次输入所读入的字节数

   (2)tellg()、tellp()

        得到输入/输出文件位置标记的当前位置

   (3)seekg(文件中的位置)、seekp(文件中的位置)

        将输入/输出文件位置标记移到指定位置

   (4)seekg(位移量,参照位置)、seekp(位移量,参照位置)

        以参照位置为基础,移动若干字节

    参照位置:

      ios::beg         文件开关,默认值

      ios::cur         位置标记当前的位置

      ios::end         文件尾

   (5)实例

      infile.seekg(100);        正向移到100字节的位置

      infile.seekg(-50,ios::cur);   从当前位置反向移50字节

      infile.seekg(-75,ios::end);   从文件尾反向移75字节

 

四、字符串与文件归纳

0、问题:

1)字符串加解密

2)文件句柄 ofstream file(“f1.txt”,ios::out)

3)如何读取带空格的字符串(键盘、文件)

4)如何判断文件尾:file.eof()(判断get()getline()等函数的返回值)

5)文件名的参数化问题(用字符指针表示文件名字符串)

6)文件操作的错误处理(if(!f) exit(1)

7)文件的关闭问题

9)文本文件与二进制文件的区别:存储空间、访问速度

10)如何删除一个文件(使用DOS命令)

1、文本文件

1)多行(如词典)

2)单字符串+单行文件(数据解决方案一)

3)操作

         写:file<<s           file.put(c)

         读:getline(file,s)      

2、二进制文件

1)数据库结构:容器+二进制文件

2)访问形式:

磁盘操作,随机存取(数据解决方案二)

内存操作,一次存取(数据解决方案三)

3)操作

         写:seekp(偏移位置,参照位置)

             file.write(char* 变量名,变量所占空间)

         读:seekg(偏移位置,参照位置)

             file.read(char* 变量名,变量所占空间)

         注意:读写之前要先定位指针

0 0
原创粉丝点击