21xrx.com
2025-06-17 06:07:18 Tuesday
登录
文章检索 我的文章 写文章
C++二进制文件的读写技巧
2023-07-08 10:50:13 深夜i     9     0
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++中二进制文件的读写技巧,可以大大提高处理文件的效率和便捷性。需要注意的是,读写二进制文件时一定要保证数据类型和字节数的正确对应,否则读取到的数据可能会是错误的。

  
  

评论区