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;
​
}
相关推荐
guozhetao23 分钟前
【ST表、倍增】P7167 [eJOI 2020] Fountain (Day1)
java·c++·python·算法·leetcode·深度优先·图论
枫叶丹41 小时前
【Qt开发】信号与槽(二)-> 信号和槽的使用
开发语言·qt
Vertira1 小时前
python 阿里云 安装 dashscope的简介、安装
开发语言·python
hqxstudying3 小时前
Java异常处理
java·开发语言·安全·异常
小坏坏的大世界5 小时前
C++ STL常用容器总结(vector, deque, list, map, set)
c++·算法
wjs20246 小时前
状态模式(State Pattern)
开发语言
我命由我123456 小时前
Kotlin 数据容器 - List(List 概述、创建 List、List 核心特性、List 元素访问、List 遍历)
java·开发语言·jvm·windows·java-ee·kotlin·list
liulilittle6 小时前
C++ TAP(基于任务的异步编程模式)
服务器·开发语言·网络·c++·分布式·任务·tap
励志要当大牛的小白菜8 小时前
ART配对软件使用
开发语言·c++·qt·算法
PAK向日葵9 小时前
【算法导论】如何攻克一道Hard难度的LeetCode题?以「寻找两个正序数组的中位数」为例
c++·算法·面试