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

C++核心编程之通过类和对象的思想对文件进行操作

目录

​​​​​​​一、文件操作

1. 文件类型分类:

2. 操作文件的三大类

二、文本文件

1.写文件

2.读文件

三、二进制文件

1.写二进制文件

2.读二进制文件


一、文件操作

程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放

通过文件可以将数据持久化

C++中对文件操作需要包含头文件< fstream >

1. 文件类型分类:

  1. 文本文件:  -文件以文本的ASCII码形式存储在计算机中
  2. 二进制文本: - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂他们

2. 操作文件的三大类

  1. ofstream :写文加
  2. ifstream :读文件
  3. fstream:读写操作

二、文本文件

1.写文件

        1.包含头文件

                #include<fstream>

        2.创建流对象

                ofstream  ofs;

        3.打开文件

                ofs.open("文件路径",打开方式);

        4.写数据

                ofs<<"写入数据";

        5.关闭文件

                ofs.close();

文件打开方式

打开方式

功能

ios::in

为读文件而打开文件

ios::out

为写文件而打开文件

ios::ate

初始位置,文件尾

ios::app

以追加的方式写入

ios::trunc

如果文件存在,先删除,再创建一个新的

ios::binary

二进制方式写文件

注意:

文件打开方式可以配合使用,  利用  |  操作符(位或)

示例:

#include<iostream>#include<fstream>using namespace std;int main(){// 1. 包含头文件<fstream>// 2. 创建流对象   ofstream ofs;// 3. 打开文件 ofs.open("文件路径",打开方式)// 4. 写数据   ofs<<"写入数据"// 5. 关闭文件 ofs.close()ofstream ofs;ofs.open("E:/test.txt", ios::out); // 没有指定具体路径存放到当前项目的文件夹下ofs << "helo " << endl;ofs << "文件操作" << endl;ofs.close();return 0;}

结果示例:

总结:

  • 文件操作必须包含头文件fstheam
  • 读文件可以利用 ofstream ,或者fstream类
  • 打开文件时候需要指定操作文件的路径,以及打开方式
  • 利用<<可以向文件中写数据
  • 操作完毕,要关闭文件

2.读文件

        1.包含头文件

                #include<fstream>

        2.创建流对象

                ifstream  ifs;

        3.打开文件

                ifs.open("文件路径",打开方式);

        4.读数据

                四种方式读取

        5.关闭文件

                ifs.close();

示例:

#include<iostream>#include<fstream>using namespace std;int main(){// 1. 包含头文件<fstream>// 2. 创建流对象   ifstream ifs;// 3. 打开文件 ofs.open("文件路径",打开方式)// 4. 读数据   四种方式读取// 5. 关闭文件 ifs.close()ifstream ifs;ifs.open("E:/test.txt", ios::in);if( !ifs.is_open()){cout<<"文件打开失败"<<endl;//return;}// 第一种:字符数组char buf[1024]={0};while(ifs>>buf){cout<<buf<<endl;}// 第二种char buf1[1024]={0};// 获取一行while(ifs.getline(buf1,sizeof(buf1))){cout<<buf1<<endl;}// 第三种:字符串中string buf2;while(getline(ifs,buf2)){cout<<buf2<<endl;}// 第四种:一个一个读取没有一行一行读取快char c;// 判断是否读取到了文件的尾部while((c = ifs.get())!=EOF){ // end of filecout<<c;}ifs.close();return 0;}

运行结果:

第一种:

第二种:

第三种:

第四种:

总结:

  • 读文件可以利用ifstream,或者fstream类
  • 利用is._open函数可以断文件是否打开成功
  • close关闭文件

 

三、二进制文件

1.写二进制文件

  • 打开方式要指定为ios::binary
  • 二进制方式写文件主要利用流对象调用成员函数write
  • 函数原型:ostream  &  write(const  char*  buffer,  int  len);
  • 参数:字符指针buffer指向内存中一段存储空间,len是读写得到字节数

示例:

#include<iostream>#include<fstream>#include<string>using namespace std;class person{public:char Name[64];int Age;};int main(){// 打开的方式要指定为 iOS::binary// 函数原型 ostream &write(const char *buffer,int len);// 1. 包含头文件// 2. 创建流对象ofstream ofs;// 3. 打开文件ofs.open("E:/text.txt",ios::out|ios::binary);// 4. 写文件person p ={"张三",18};ofs.write((const char *)&p,sizeof(p));// 5. 关闭文件ofs.close();return 0;}

运行结果示例:

2.读二进制文件

  • 二进制方式读文件主要利用流对象调用成员函数read
  • 函数原型:itream  &  read(char*  buffer,  int  len);
  • 参数:字符指针buffer指向内存中一段存储空间,len是读写的字节数

示例:

#include<iostream>#include<fstream>#include<string>using namespace std;class person{public:char Name[64];int Age;};int main(){// 打开的方式要指定为 iOS::binary// 函数原型 istream &read(const char *buffer,int len);// 1. 包含头文件// 2. 创建流对象ifstream ifs;// 3. 打开文件  判断文件是否读取成功ifs.open("E:/text.txt",ios::in|ios::binary);if(!ifs.is_open()){return 0;}// 4. 读文件person p ;ifs.read((char *)&p,sizeof(p));cout<<"姓名: "<<p.Name<<endl<<"年龄: "<<p.Age<<endl;// 5. 关闭文件ifs.close();return 0;}

运行结果:

相关文章:

C++核心编程之通过类和对象的思想对文件进行操作

目录 ​​​​​​​一、文件操作 1. 文件类型分类&#xff1a; 2. 操作文件的三大类 二、文本文件 1.写文件 2.读文件 三、二进制文件 1.写二进制文件 2.读二进制文件 一、文件操作 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放 通过文件可以将…...

Verilog语法——4.Verilog工程模板、相应规范再强调

参考资料 【明德扬_verilog零基础入门语法HDL仿真快速掌握-手把手教你写FPGA/ASIC代码设计流程中的应用】 4. Verilog工程模板、相应规范 4.1 Verilog工程模板 4.1.1 设计模块模板 module module_name(clk,rst_n,//其他信号&#xff0c;举例doutdout };//参数定义parameter …...

CNN:Convolutional Neural Network(下)

目录 1 CNN 学到的是什么 1.1 Convolution 中的参数 1.2 FFN 中的参数 1.3 Output 2 Deep Dream 3 Deep Style 4 More Application 4.1 AlphaGo 4.2 Speech 4.3 Text 原视频&#xff1a;李宏毅 2020&#xff1a;Convolutional Neural Network 本博客属于学…...

FPGA时序分析与时序约束(四)——时序例外约束

目录 一、时序例外约束 1.1 为什么需要时序例外约束 1.2 时序例外约束分类 二、多周期约束 2.1 多周期约束语法 2.2 同频同相时钟的多周期约束 2.3 同频异相时钟的多周期约束 2.4 慢时钟域到快时钟域的多周期约束 2.5 快时钟域到慢时钟域的多周期约束 三、虚假路径约…...

无需任何三方库,在 Next.js 项目在线预览 PDF 文件

前言&#xff1a; 之前在使用Vue和其它框架的时候&#xff0c;预览 PDF 都是使用的 PDFObject 这个库&#xff0c;步骤是&#xff1a;下载依赖&#xff0c;然后手动封装一个 PDF 预览组件&#xff0c;这个组件接收本地或在线的pdf地址&#xff0c;然后在页面中使用组件的车时候…...

排序问题——晴问题库

排序问题——晴问题库 排序问题是线性数据的常考问题&#xff0c;在解晴问题库时总结归纳以下关于排序的解题方法和思路。 感谢晴神 排序问题是数据结构中十分重点的一部分。 可以分为五个大部分&#xff1a; 插入排序选择排序交换排序基数归并 再具体往下分&#xff1a; 插…...

【LabVIEW FPGA入门】FPGA中的数学运算

数值控件选板上的大部分数学函数都支持整数或定点数据类型&#xff0c;但是需要请注意&#xff0c;避免使用乘法、除法、倒数、平方根等函数&#xff0c;此类函数比较占用FPGA资源&#xff0c;且如果使用的是定点数据或单精度浮点数据仅适用于FPGA终端。 1.整数运算 支持的数…...

华为设备VRRP配置

核心代码&#xff1a; 需要对所有虚拟路由器设置&#xff08;要进入到对应的端口&#xff09; vrrp vrid 38 virtual-ip 192.168.10.254 vrrp vrid 38 priority 120 vrrp vrid 38 track int g0/0/1 reduced 30①mac由vrid生成 ②指定虚拟ip ③虚拟ip作为内部主机的网关&#x…...

2024年艺术发展与文化产业国际会议(ICADCI 2024)

2024年艺术发展与文化产业国际会议(ICADCI 2024) 2024 International Conference on Art Development and Cultural Industry(ICADCI 2024) 数据库&#xff1a;EI,CPCI,CNKI,Google Scholar等 一、【会议简介】 2024年艺术发展与文化产业国际会议(ICADCI 2024)将于丽江这座美丽…...

华为手表开发:WATCH 3 Pro(10)获取心率_java 华为手表获取心跳

华为手表开发:WATCH 3 Pro(10)获取心率_java 华为手表获取心跳 Excerpt 文章浏览阅读1.2k次。鸿蒙开发,获取手表心跳,按钮点击后触发的方法,我们将跳转页面的代码写在这个位置就可以实现点击按钮进行跳转页面的动作。在HTML文件“index.hml”,添加按钮,这里按钮用到是标…...

使用企业订货软件的担忧与考虑|网上APP订货系统

使用企业订货软件的担忧与考虑|网上APP订货系统 网上订货系统担心出现的问题 1&#xff0c;如果在订货系统中定错(多)货物了该怎么办 其实这也是很多人在网购或者是现实中经常会犯的一个错误&#xff0c;但是网上订货平台为大家提供了很多的解决方案&#xff0c;其中对于订单的…...

Java-集合-Collection类

1 需求 2 接口 Interface Collection<E> public interface Collection<E> extends Iterable<E> 2.3 Method Detail int size()boolean isEmpty()boolean contains(Object o)Iterator<E> iterator()Object[] toArray()<T> T[] toArray(T[] a)…...

Linux:/proc/kmsg 与 /proc/sys/kernel/printk_xxx

目录 前言一、/proc/kmsg1、简介2、如何修改内核日志缓冲区3、dmesgklogctl 函数&#xff08;来源于 man 手册&#xff09; 4、扩展阅读 二、 /proc/sys/kernel/printk_xxx三、/dev/kmsg 前言 本篇文章将为大家介绍与 Linux 内核日志相关的一些控制文件&#xff0c;共同学习&am…...

使用 Postman 发送 get 请求的简易教程

在API开发与测试的场景中&#xff0c;Postman 是一种普遍应用的工具&#xff0c;它极大地简化了发送和接收HTTP请求的流程。要发出GET请求&#xff0c;用户只需设定正确的参数并点击发送即可。 如何使用 Postman 发送一个GET请求 创建一个新请求并将类型设为 GET 首先&#…...

【网站项目】基于jsp的拍卖网站设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…...

为什么洗衣机会每天自动上传3.6GB数据?

“为什么我家的LG洗衣机每天都会上传3.6GB的数据&#xff1f;” 一位名为Johnie用户发现他家电设备的异常行为后表示很不理解&#xff0c;随后他把相关信息发布在X平台&#xff0c;很快这篇帖子就收获了超过1700万次的浏览量&#xff0c;并迅速变成一场争议和网络安全battle。…...

word写标书的疑难杂症总结

最近在解决方案工作&#xff0c;与office工具经常打交道&#xff0c;各种问题&#xff0c;在此最下记录&#xff1a; 1.word中文档距离文档顶端有距离调整不了 1.疑难杂症问题1&#xff0c;多个空格都是不能解决 #解决办法&#xff1a;word中--布局-下拉框---“版式”--“垂直…...

2024,会更好嘛?

2023转眼过去&#xff0c;从1月的前端&#xff0c;2月的java&#xff0c;3月的数据库&#xff0c;4月的运维&#xff0c;我尝试了许多技术方向&#xff0c;终究在2023年5月&#xff0c;凭着背的Java面试题&#xff0c;拿到了三四个offer。2023年6月&#xff0c;边玩边整自己的毕…...

Nsis打包Unity Exe文件(通用)

Nsi 脚本 !include "MUI2.nsh"#使用现代UI Unicode true #使用Unicode !define EXENAME "exeName" #定义常量 exe名称 !define SHORTCUT "快捷方式名称" #定义桌面快捷方式的中文名称Name ${EXENAME} #安装程序的title OutFile "${EXENAME…...

【Azure 架构师学习笔记】- Azure Databricks (6) - 配置Unity Catalog

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (5) - Unity Catalog 简介 UC的关键特性 之所以DataBricks要用UC&#xff0c; 很大程度是对安全的管控。从上文可以了解到它的四大特性&#…...

毕业设计精选【芳心科技】无人机定点投放控制

实物效果图&#xff1a;实现功能&#xff1a;本次设计的目的是实现无人机在空中投放物品的落点计算&#xff0c;系统的核心是单片机&#xff0c;它控制本系统的各种功能&#xff0c;所以它的选择是非常重要的&#xff0c;在本设计中选用的是GD32F103C8T6单片机&#xff0c;这款…...

探灵直播2026最新官方正版免费下载 一键转存 永久更新 (看到速转存 资源随时走丢)

下载链接 本文将为您客观介绍《探灵直播》的幕后作者、核心玩法机制&#xff0c;并将其与同类型竞品进行简单的横向对比&#xff0c;带您全面了解这款作品的独特之处。 一、 幕后作者&#xff1a;专注于美少女题材的 qureate 《探灵直播》的开发商 qureate 是一家在日本游戏界…...

这份榜单够用!盘点2026年断层领先的的AI论文写作软件

一天写完毕业论文在2026年已不再是天方夜谭。以下是2026年最炸裂、实测能大幅提速的AI论文写作软件&#xff0c;覆盖选题构思、文献综述、数据整理、格式排版等核心场景&#xff0c;帮你高效搞定论文。 一、全流程王者&#xff1a;一站式搞定论文全链路&#xff08;一天定稿首选…...

系统内存报告

used_mem$(free | grep Mem | tr -s ""|cut -d "" -f3) total_mem$(free | grep Mem | tr -s ""|cut -d "" -f2) percent$(($used_mem * 100 / $total_mem)) [[ $percet -gt 50 ]] && echo "内存告警" ||echo "…...

写给前端的 CANN-ops-fft:昇腾FFT算子库到底是啥?

写给前端的 CANN-ops-fft&#xff1a;昇腾FFT算子库到底是啥&#xff1f; 之前做信号处理&#xff0c;兄弟问我&#xff1a;“哥&#xff0c;我想做频域分析&#xff0c;昇腾上有现成的 FFT 库吗&#xff1f;” 好问题。今天一次说清楚。 ops-fft 是啥&#xff1f; ops-fft Op…...

PX4固件编译避坑指南:自定义机型后如何正确生成airframe_metadata并更新QGC

PX4固件编译避坑指南&#xff1a;自定义机型后如何正确生成airframe_metadata并更新QGC 当你花费数小时精心设计了一个全新的无人机机型&#xff0c;修改完所有参数并准备在QGroundControl&#xff08;QGC&#xff09;中测试时&#xff0c;却发现地面站无法识别你的自定义机型—…...

Steam创意工坊下载终极指南:无需Steam账号也能畅玩海量模组

Steam创意工坊下载终极指南&#xff1a;无需Steam账号也能畅玩海量模组 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL WorkshopDL是一款跨平台Steam创意工坊下载工具&#xff…...

国产车规芯片崛起,如何用东软睿驰NeuSAR或经纬恒润方案快速适配?

国产车规芯片与AUTOSAR方案融合实战&#xff1a;从芯驰MCU到NeuSAR/经纬恒润的适配指南 当一颗国产车规级MCU遇上自主AUTOSAR基础软件&#xff0c;这场"中国芯"与"中国魂"的相遇&#xff0c;正在重构汽车电子开发的成本结构与技术生态。去年某新能源车企的…...

AhabAssistantLimbusCompany终极指南:10分钟快速掌握智能自动化技巧

AhabAssistantLimbusCompany终极指南&#xff1a;10分钟快速掌握智能自动化技巧 【免费下载链接】AhabAssistantLimbusCompany AALC&#xff0c;PC端Limbus Company小助手。AALC&#xff0c;Limbus Company Assistant on PC 项目地址: https://gitcode.com/gh_mirrors/ah/Aha…...

虚实融合新纪元:UWB物理锚点 vs 镜像视界数维空间无感定位

虚实融合新纪元&#xff1a;UWB物理锚点 vs 镜像视界数维空间无感定位虚实融合产业正从“物理锚点绑定”迈向“数维空间原生映射”新纪元。UWB以基站与标签构建刚性物理坐标体系&#xff0c;是虚实同步的硬件依赖范式&#xff1b;镜像视界浙江科技有限公司以纯视觉AI重构空间感…...