zoukankan      html  css  js  c++  java
  • c++读写二进制文件

    要读取文件必须包含<fstream>头文件,这里包含了C++读写文件的方法,可以使用fstream 类,这个类可以对文件进行读写操作。
     
    1、打开文件。
     
    打开文件可以有两种方式,第一种可以使用fstream 类的构造函数。
    ios::in :输入文件(同ios_base::in)
    ios::out :输出文件(同ios_base::out)
    ios::app :追加方式(同ios_base::app)
    ios::binary:二进制形式(同ios_base::binary)
     
    可以通过 “|” 匹配多个,如:
     
    fstream file("test.dat",ios::in|ios::binary); //以二进制形式读
     
    另外一种方法就是使用open 函数。
     
    fstream file;
    file.open("test.dat",ios_base::in|ios_base::out|ios_base::app);
     
    这样就可以打开一个可读写的文件了。如果文件不存在的话,就会创建一个新文件并且以读写方式打开。
    注意:这里需要说明一点,如果文件不存在的话,open 函数中第二个参数必须包含ios_base::out|ios_base::app,否则就不能正确创建文件。
     
    2、写文件。
     
    既然是写二进制文件可以向文件中写入一个整形值。写二进制字符只能使用write 函数。
    但是write 函数的原形是write(const char * ch, int size)。第一个参数是char *类型,所以需要把将要写入
    文件的int 类型转换成char *类型。这里的转换困扰了我好几天,不过终于弄明白了。代码如下。
    int temp;
    file.write((char *)(&temp),sizeof(temp));
     
    必须转换为 char*。
     
    数组可以一次写入,没有必要逐个写(其中数组中类型可以是结构体什么的,只要里面不含有指针);
    	ofstream binaryOut( dicpath, ios::binary);
    	binaryOut.write((char*)(&nodeNum), sizeof(nodeNum));
    	//for (int i=0; i<nodeNum; i++)
    	//{
    	//	binaryOut.write((char*)( &_RootNode[i]), sizeof(Node) );
    	//}
    	binaryOut.write((char*)( _RootNode), sizeof(Node)*nodeNum );
    	binaryOut.close();
    

      注释掉的代码和红色代码同效;

      

     
    3、读文件。
     
    可以写文件了,读文件就好办多了。读文件需要用到read 函数。其参数和write 大致相同,read(const char * ch, int size)。
    要把内容读到int 类型变量中同样涉及到一个类型转换的问题。和写文件一样。
    int readInt;
    file.read((char *)(&readInt),sizeof(readInt));
    这样文件中的int 值就读入到int 型变量readInt 中了。
    数组可以一次读入,没有必要逐个读(其中数组中类型可以是结构体什么的,只要里面不含有指针);
     
     
  • 相关阅读:
    Java中用Apache POI生成excel和word文档
    openlayers实现画圆
    openlayers实现wfs属性查询和空间查询
    jquery自定义控件拖拽框dragbox
    基于openlayers实现聚类统计展示
    openlayers实现在线编辑
    openlayers之selectfeature
    J
    HDU-1051Wooden Sticks
    HDU-1087Super Jumping! Jumping! Jumping!
  • 原文地址:https://www.cnblogs.com/shanguanghui/p/3683067.html
Copyright © 2011-2022 走看看