当前位置: 首页 > news >正文

2.二进制的方式读写文件

文章目录

    • 写入文件
      • 代码
      • 运行结果
    • 读出文件
      • 代码
      • 运行结果
    • 文件打开模式标记(查表)

写入文件

------写文件一共五步:------
第一步:包含头文件
第二步:创建流对象
第三步:指定方式打开文件
第四步:写内容
第五步:关闭文件

代码

注意二进制写文件时,字符串不要使用string,尽量使用C语言中的字符数组来表示。

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<fstream>using namespace std;/*------写文件一共五步:------*/
/*------第一步:包含头文件------*/
/*------第二步:创建流对象------*/
/*------第三步:指定方式打开文件------*/
/*------第四步:写内容------*/
/*------第五步:关闭文件------*/class Person
{
public:char name[200];int age;
};void test01()
{Person s = { "小丽", 20 };/*创建对象*/ofstream ofs;/*二进制打开文件*/ofs.open("textBinary.txt", ios::out | ios::binary);/*写入数据*/ofs.write((const char *)&s, sizeof(Person));/*关闭文件*/ofs.close();return;
}int main()
{test01();return 0;
}

运行结果

由于是二进制写入,所以看不到完整的写入内容,下边会用二进制的形式,读取文件中的数据
在这里插入图片描述

读出文件

/------读文件一共五步:------/
第一步:包含头文件
第二步:创建流对象
第三步:打开文件并判断文件是否打开成功
第四步:读数据
第五步:关闭文件

代码

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<fstream>using namespace std;/*------读文件一共五步:------*/
/*------第一步:包含头文件------*/
/*------第二步:创建流对象------*/
/*------第三步:打开文件并判断文件是否打开成功------*/
/*------第四步:读数据------*/
/*------第五步:关闭文件------*/class Person
{
public:char name[200];int age;
};void test01()
{Person s;/*创建对象*/ifstream ifs;/*二进制打开文件*/ifs.open("textBinary.txt", ios::in | ios::binary);if(!(ifs.is_open())){cout << "文件打开失败!" << endl;return;}/*写入数据*/ifs.read((char*)&s, sizeof(Person));/*关闭文件*/ifs.close();cout << "姓名 :" << s.name << endl;cout << "年龄 :" << s.age << endl;return;
}int main()
{test01();return 0;
}

运行结果

从运行结果来看,已经成功的将二进制文件中的数据,读到了程序的缓存中
在这里插入图片描述

文件打开模式标记(查表)

在这里插入图片描述
打开模式信息是从C语言中文网查阅的,大家可自行去查看。

http://www.lryc.cn/news/319517.html

相关文章:

  • Seata的详细解释
  • JS手写实现洋葱圈模型
  • 3.Windows下安装MongoDB和Compass教程
  • go反射实战
  • Docker 中 MySQL 的部署与管理
  • 基础练习题之函数
  • Java NIO浅析
  • 数据挖掘与大数据的结合
  • 分布式链路追踪(一)SkyWalking(2)使用
  • 【QT入门】VS2019+QT的开发环境配置
  • RTP 控制协议 (RTCP) 反馈用于拥塞控制
  • 基于SpringBoot SSM vue办公自动化系统
  • SpingBoot集成Rabbitmq及Docker部署
  • 子组件自定义事件$emit实现新页面弹窗关闭之后父界面刷新
  • 【框架】跨端开发框架介绍(Windows/MacOS/Linux/Andriod/iOS/H5/小程序)
  • 亚马逊云科技 Lambda 运行selenium
  • 算法——前缀和之除自身以外数组的乘积、和为K的子数组、和可被K整除的子数组、连续数组、矩阵区域和
  • Text-to-SQL 工具Vanna + MySQL本地部署 | 数据库对话机器人
  • linux最佳入门(笔记)
  • 加速 PyTorch 模型预测常见方法梳理
  • 【STM32定时器 TIM小总结】
  • RISC-V 编译环境搭建:riscv-gnu-toolchain 和 riscv-tools
  • 一文速通ESP32(基于MicroPython)——含示例代码
  • 记录一次业务遇到的sql问题
  • 代码分支管理
  • uniapp sqlite时在无法读取到已准备好数据的db文件中的数据
  • 源码编译部署LAMP
  • Echo框架:高性能的Golang Web框架
  • 数据结构--七大排序算法(更新ing)
  • 202203青少年软件编程(图形化) 等级考试试卷(二级)