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;
​
}
相关推荐
拳里剑气18 小时前
C++算法:BFS解决FloodFill算法
c++·算法·bfs·宽度优先
爱写代码的小朋友18 小时前
从零开始学 Win32 API:C++ 窗口编程实战(VS Code + MinGW-w64 命令行详解)
开发语言·c++
果汁华18 小时前
Function Calling 与 Python 实战完整指南
开发语言·网络·python
小小晓.18 小时前
C++:语句和作用域
开发语言·c++
fqbqrr19 小时前
2607C++,soui,xplayer视频播放器
c++·soui
wanderist.19 小时前
Lambda表达式在算法竞赛中的应用
java·开发语言·算法
zh路西法20 小时前
【10天速通ROS2-PX4无人机】(四) 关掉GPS和气压计,纯激光定位还能飞吗
c++·无人机·px4·ros2·卡尔曼滤波·fastlio2
海天鹰20 小时前
PHP上传文件
android·开发语言·php
yyds_yyd_1008621 小时前
1464. 数组中两元素的最大乘积(2026.07.27)
数据结构·c++·算法·leetcode
Yeauty1 天前
渲染成图再 CLI 拼接,还是进程内直推?Rust 帧到视频的两条路
开发语言·rust·音视频