C++文件操作--2 二进制文件操作

  • 以二进制形式进行文件读写
  • 打开方式需要指定ios::binary

2.1 写二进制文件

使用流对象调用**++成员函数write++**实现写二进制文件

  • 函数原型:ostream& write(++const char * buffer++, int len);
  • 参数解释:字符指针buffer指向一段内存空间,len是读写的**++字节数++**

其他步骤顺序与文本文件操作的一致 ,请参考上篇《C++文件操作--1 文本文件操作》https://blog.csdn.net/zx870121209/article/details/147992335?spm=1011.2415.3001.5331

cpp 复制代码
class Person
{
public:
    char m_name[10];
    int m_age;
};
​
int main()
{
    Person p = {"zhangsan", 18}; // 对象初始化
​
    std::ofstream ofs;// 创建文件流对象
    ofs.open("test1.txt", std::ios::out|std::ios::binary);// 打开文件
    ofs.write((const char*)&p, sizeof(p));// 以二进制写入文件,数据类型强转
    ofs.close();// 关闭文件
    
    return 0;
}

2.2 读二进制文件

使用流对象调用**++成员函数read++**实现写二进制文件

  • 函数原型:ostream& read(++char * buffer++, int len);
  • 参数解释:字符指针buffer指向一段内存空间,len是读写的**++字节数++**

其他步骤顺序与文本文件操作的一致 ,请参考上篇《C++文件操作--1 文本文件操作》https://blog.csdn.net/zx870121209/article/details/147992335?spm=1011.2415.3001.5331

cpp 复制代码
class Person
{
public:
    char m_name[10];
    int m_age;
};
​
int main()
{
    Person p;
​
    std::ifstream ifs; // 创建文件流对象
    ifs.open("test1.txt", std::ios::in|std::ios::binary);
    if(!ifs.is_open()) // 判断是否打开文件成功
    {std::cout << "open failed!" << std::endl;}
    ifs.read((char *)&p, sizeof(p)); // 读取二进制数据,数据类型强转
    ifs.close();
​
    std::cout << "姓名:" << p.m_name << std::endl;
    std::cout << "年龄:" << p.m_age << std::endl;
    
    return 0;
​
}
相关推荐
阿让啊2 小时前
C语言strtol 函数使用方法
c语言·数据结构·c++·单片机·嵌入式硬件
liulilittle2 小时前
OPENPPP2 —— IP标准校验和算法深度剖析:从原理到SSE2优化实现
网络·c++·网络协议·tcp/ip·算法·ip·通信
honder试试5 小时前
焊接自动化测试平台图像处理分析-模型训练推理
开发语言·python
^Rocky5 小时前
JavaScript性能优化实战
开发语言·javascript·性能优化
田里的水稻5 小时前
C++_队列编码实例,从末端添加对象,同时把头部的对象剔除掉,中的队列长度为设置长度NUM_OBJ
java·c++·算法
ponnylv5 小时前
深入剖析Spring Boot启动流程
java·开发语言·spring boot·spring
萧邀人5 小时前
第一课、Cocos Creator 3.8 安装与配置
开发语言
Jayden_Ruan6 小时前
C++逆向输出一个字符串(三)
开发语言·c++·算法
不吃鱼的羊6 小时前
启动文件Startup_vle.c
c语言·开发语言
liulun6 小时前
Skia如何渲染 Lottie 动画
c++·动画