21xrx.com
2024-05-20 08:36:44 Monday
登录
文章检索 我的文章 写文章
C++二进制文件的读写技巧
2023-07-08 10:50:13 深夜i     --     --
C++ 二进制文件 读写技巧

在C++中,二进制文件的读写是非常常见的操作,尤其是在处理大量数据时。接下来,我们将介绍一些C++中二进制文件的读写技巧。

1. 文件打开方式

在打开二进制文件时,需要使用二进制方式打开文件,即在文件打开函数中加入ios::binary参数。示例代码如下:


#include<iostream>

#include<fstream>

using namespace std;

int main()

{

  fstream file;

  file.open("test.bin", ios::out|ios::binary);//写入二进制文件

  int a=2;

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

  file.close();

  file.open("test.bin", ios::in|ios::binary);//读取二进制文件

  int b=0;

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

  cout<<"b="<<b<<endl;

  file.close();

  return 0;

}

2. 读写指针

在C++中,读写指针作为读写二进制文件的重要参数,可以结合文件读写操作进行控制。例如,可以使用seekg()和seekp()设置读写指针的位置。


fstream file;

file.open("test.bin", ios::in|ios::binary);

if(file.is_open())

{

  //获取文件长度并计算数据个数

  file.seekg(0,ios::end);

  int length=file.tellg();

  int num=length/sizeof(int);

  cout<<"num="<<num<<endl;

  //重新设置读指针

  file.seekg(0,ios::beg);

  //读取全部数据

  int* data=new int[num];

  file.read((char*)data,sizeof(int)*num);

  for(int i=0;i<num;i++)

  {

    cout<<data[i]<<" ";

  }

  cout<<endl;

  delete[] data;

  file.close();

}

3. 写入和读取结构体

在处理大量数据时,可以使用结构体来简化操作。可以将结构体作为数据类型进行读写操作。


struct student

  int id;

  string name;

  int score;

;

fstream file;

file.open("test.bin", ios::out|ios::binary);

if(file.is_open())

{

  student a=90;

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

  file.close();

}

file.open("test.bin", ios::in|ios::binary);

if(file.is_open())

{

  student b;

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

 cout<<b.id<<" "<<b.name<<" "<<b.score<<endl;

  file.close();

}

以上是C++中二进制文件的读写技巧,可以大大提高处理文件的效率和便捷性。需要注意的是,读写二进制文件时一定要保证数据类型和字节数的正确对应,否则读取到的数据可能会是错误的。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复