一、基本概念

以二进制的方式对文件进行读写操作

打开方式指定为  ios::binary

优点:可以写入自己定义的数据类型

1、写文件

二进制方式写文件:流对象调用成员write

  • 函数原型:ostream& write(const char * buffer,int len);
  • 参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数
  • 写文件步骤:包含头文件-->创建数据流-->打开文件-->ofs.write写文件-->关闭文件

注意ofs.write(const char * buffer,int len),这里需要的buffer的数据类型const char * !!!(强转)

2、读文件

二进制读文件:流对象调用成员函数read

  • 函数原型:istream& read(char *buffer,int len);
  • 参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数
  • 读文件步骤:包含头文件-->创建数据流-->打开文件-->ofs.read读文件-->关闭文件

注意ifs.write(char * buffer,int len),这里需要的buffer的数据类型char * !!!(强转)

二、代码实现

1、写文件

#include<iostream>
using namespace std;
#include<fstream>//二进制文件 写文件class Person
{
public:char m_Name[64];//姓名int m_Age;//年龄
};
void test01()
{//1、包含头文件fstream//2、创建流对象ofstream ofs("D:\\C++\\c++class\\第二部分\\file\\person.txt", ios::out | ios::binary);//3、打开文件//ofs.open("D:\\C++\\c++class\\第二部分\\file\\person.txt",ios::out|ios::binary)//4、写文件Person p = { "Susan",18 };ofs.write((const char*)&p, sizeof(Person)); //p取地址& p;但是要求const char *;所以强转(const char*)&p//5、关闭文件ofs.close();}int main()
{test01();system("pause");return 0;
}

2、读文件

#include<iostream>
using namespace std;
#include<fstream>//二进制文件 读文件
class Person
{
public:char m_Name[64];//姓名int m_Age;//年龄
};
void test01()
{//1、包含头文件fstream//2、创建流对象ifstream ifs("D:\\C++\\c++class\\第二部分\\file\\person.txt", ios::in | ios::binary);//3、打开文件//ifs.open("D:\\C++\\c++class\\第二部分\\file\\person.txt",ios::out|ios::binary)//判断文件是否打开成功if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}//4、写文件Person p ;ifs.read((char*)&p, sizeof(Person));cout << "姓名:" << p.m_Name << "   年龄:" << p.m_Age << endl;//5、关闭文件ifs.close();}int main()
{test01();system("pause");return 0;
}

c++学习笔记-二进制文件操作(哔站-黑马程序员c++教学视频)相关推荐

  1. c++学习笔记-提高篇-STL标准模板库2(哔站-黑马程序员c++教学视频)

    STL常用容器:string.vector.deque 目录 STL常用容器:string.vector.deque 一.string容器 1.string的基本概念 2.string的构造函数 3. ...

  2. c++学习笔记-提高编程-模板(哔站-黑马程序员c++教学视频)

    目录 1.模板概念 2.模板特点 3.模板语法 3.1编程思想:泛型编程 3.2两种模板方法: 3.2.1 函数模板 3.2.2 类模板 1.模板概念 通用的模具,提高代码复用性 2.模板特点 不可以 ...

  3. 前端之HTML学习笔记一(B站黑马程序员)

    目录 1.网页 1.1网页的概念 1.2HTML的概念 1.3网页的形成 2.常用的浏览器 3.web标准 3.1为什么需要web标准 3.2web标准的构成(重点) 1.网页 1.网页 1.1网页的 ...

  4. Python学习笔记(1)---B站黑马程序员

    Python学习笔记(1)-B站黑马程序员 Python学习笔记(2)-B站黑马程序员 Python学习笔记(3)-B站黑马程序员 文章目录 Linux基础 Python基础 一.Python介绍 0 ...

  5. C++学习笔记(B站黑马程序员C++教程)

    C++学习笔记(B站黑马程序员C++教程) 简介 视频链接https://www.bilibili.com/video/BV1kV411U7Ub?spm_id_from=333.999.0.0 建议用 ...

  6. Python学习笔记(3)---B站黑马程序员

    Python学习笔记(1)-B站黑马程序员 Python学习笔记(2)-B站黑马程序员 Python学习笔记(3)-B站黑马程序员 文章目录 五.项目实战--飞机大战 001-Pycharm中安装py ...

  7. 【168天】黑马程序员27天视频学习笔记【Day07】

    [168天]黑马程序员27天视频学习笔记[Day07] 叨逼叨两句 决定了,我会记住这一天! 07-01:构造方法Constructor概述和格式 构造方法概述和作用 给对象的数据(属性)进行初始化. ...

  8. Visual Studio 2022版本 B站黑马程序员C++自学分享-第一阶段(主要包括:自己敲的代码、通过注释来备注上自己对代码的理解)

    Visual Studio 2022版本 B站黑马程序员C++自学分享-第一阶段(主要包括:自己敲的代码.通过注释来备注上自己对代码的理解) 前言 一.第一阶段 C++基础语法入门 对C++有初步了解 ...

  9. Visual Studio 2022版本 B站黑马程序员C++自学分享-第三阶段(1)(主要包括:自己敲的代码、通过注释来备注上自己对代码的理解)

    Visual Studio 2022版本 B站黑马程序员C++自学分享-第三阶段(1)(主要包括:自己敲的代码.通过注释来备注上自己对代码的理解) 前言 三.第三阶段 C++提高编程 介绍C++泛型编 ...

最新文章

  1. 一个计算机高手的成长(转)
  2. python progressbar 多行_使用单击.progressbar在Python中使用多处理
  3. php 正则图片相对路径替换成绝对路径_相对路径的优缺点
  4. linux centos7 安装最新版git 教程
  5. [INS-08109] Unexpected error occurred while validating inputs at state 'getOCMDetails'.
  6. Arduino学习笔记07
  7. java连接mysql数据库连接池_java使用原生MySQL实现数据的增删改查以及数据库连接池技术...
  8. hazelcast入门教程_Hazelcast入门指南第3部分
  9. 【渝粤教育】国家开放大学2018年秋季 8177-21T (1)工程经济与管理 参考试题
  10. InheritableThreadLocal类原理简介使用 父子线程传递数据详解 多线程中篇(十八)...
  11. 保存jpg太大怎么办_[日本清酒小知识] 清酒可以放多久?应该怎样保存呢?——清酒保存指南(收藏版)...
  12. jinfo java_Java自带的JVM性能监控及调优工具(jps、jinfo、jstat、jmap、javap)使用介...
  13. node.js下mongoose简单操作实例
  14. PR剪辑视频工作流程 大剪辑师分享的高级视频编辑技巧
  15. JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
  16. Visual Studio 实用插件推荐
  17. 项目中站立会议和故事墙的那些事儿—敏捷开发
  18. 若依框架获取和修改当前登录用户信息
  19. CSS【Text(文本)+Fonts(字体)】
  20. 第一本书 第九章 使用对象吃货联盟

热门文章

  1. 知识蒸馏⚗️ | YOLOv5知识蒸馏实战篇
  2. docker 运行一个二进制文件(部署go web)
  3. 启发式算法,元启发式算法,超启发式算法
  4. 在windows下实时监控、接受文件变化小工具
  5. 虎从风跃,龙借云行--神行者Wi10无线移动硬盘开启WIFI无线存储共享新时代_MID论坛_太平洋电脑网产品论坛...
  6. 数据库性能测试-mysql篇
  7. 【音视频开发】基础知识:视频简介
  8. 2021年江苏省淮安高考成绩查询,2021年江苏淮安高考时间:6月7日至9日
  9. 滚动条如何设置样式和滚动条悬浮显示与隐藏
  10. TexturePacker破解版