C++学习~~对于二进制文件的读写命名空间再认识异常处理

目录

1.将数据以二进制形式放到磁盘

2.将上述的数据读入内存并且显示在显示器上面

3.异常处理机制

4.抛出异常的应用实例


1.将数据以二进制形式放到磁盘

(1)使用student定义结构体数组stud,并对其进行初始化,创建输出文件流对象outfile,这个对象是属于这个ofstream类的,打开方式是ios::binary的方式,表示的就是以二进制的方式打开一个文件,如果不指定方式就是默认的ASCII方式;

(2)如果这个打开失败的话,就输出错误信息,并且退出这个程序;

(3)如果原来就存在这个stud.dat文件,我们就会删除原来的数据,写入新的数据,没有这个文件就会创建这个文件,然后写数据;

(4)使用这个write函数向这个stud,dat文件里面输出数据,因为这个成员函数的第一个参数的类型是char*类型的,但是我们这个参数是结构体student*类型的,所以在这个地方应该进行强制类型转换;

成员函数的第二个参数是sizeof(stud[i])表示的是一次性输出的字节数,这个地方指的就是结构体数组一个元素的字节数;

(5)我们之前不创建这个文件的话,程序执行之后这个文件就会自动生成,我们可以通过下面的方式找到文件,并且查看里面的内容;

 首先就是在这个文件里面找到这个创建的文件,其实这个文件就和我们的test.cpp在同一级目录下面,我们选择添加现有项,就可以看到这个文件,然后把这个文件添加进来;

这个时候我们已经添加进来了,但是这个时候我们无法打开,因为这个是二进制文件,我们可以使用二进制文件处理器进行这个处理之后再进行查看;

按照下面的,选择打开方式,然后选择这个二进制编辑器,这样的话,我们就可以看到我们之前的这个输入数据了;

 

2.将上述的数据读入内存并且显示在显示器上面

(1)这个是把文件里面的数据显示在这个显示器上面,我们还是创建一个对象infile对象,打开方式是ios::binary方式,和刚才的一样;

(2)然后我们进行的是这个read成员函数获取里面的数据,使用cout加上这个循环语句让这个原来的文件里面的结果显示在这个显示器上面; 

3.异常处理机制

(1)异常处理机制就是我们经常说的抛异常,这个在我们的软件开发里面很常见,例如这个triangle这个函数是求这个三角形的面积,我们使用的是这个海伦公式,这个公式里面使用到了sqrt函数,这个函数就是用来求解这个算数平方根的;

(2)包含相应的头文件之后,我们就可以使用这个程序进行这个计算这个三角形的面积 ,但是这个前提是我们建立的这个三角形符合三角形的构成条件,如果用户输入的这个三角形的三条边很笨就不符合这个三角形的构成条件,我们这个时候就需要自己的进行这个对应的设置,因为这个程序是无法进行判断的,在这个情况下,如果我们输入这个2 2 4三边长度,这个显然是不符合这个三角形的构成条件的,我们借助这个来介绍一下这个抛出异常机制;

(3)抛出异常机制使用的是这个try  catch语句,try语句是用来进行判断这个可能会出现问题的语句块,catch是用来捕获这个异常情况的;

(4)这样的话我们就可以使用这个机制对于这个是否构成三角形进行对应的判断,在这个triangle函数里面,我们使用这个if语句进行构成三角形三条边的条件判断,如果不符合这个三角形的三条边的构成条件,就会使用这个throw语句抛出异常;

(5)我们使用这个catch语句用来接收这个抛出的异常,需要注意的就是这个抛出异常的类型和接受异常的类型都应该是一样的,例如我们这里的就是string类型的;

4.抛出异常的应用实例

(1) 我们上面演示的是这个一个简单的判断三角形是否可以构成的的抛出异常机制,当我们可能会有多个异常的时候,我们可以把这些抛出的异常放到一个类里面去,这个样的话我们可以对于这个异常进行管理和接受;

当抛出的异常类型相同的时候,我们使用一个catch语句进行接收就已经可以了,但是这个抛出异常的类型和这个捕获异常的类型是一样的,当我们抛出的异常所属的类型不相同的时候,我们就需要使用多个catch语句进行这个异常的捕获(我们只需要知道这个在语法上面是允许通过的,也就是说在一个程序里面,并不是只能有一个try   catch语句存在,是可以存在多个的);

(2)下面的这个案例是只存在一个的catch语句的捕获异常,但是他可能会抛出多个异常,但是这些抛出的异常的类型是一样的,我们只需要使用一个catch语句进行这个异常的捕获就可以了,我们以这个作为案例进行介绍这个抛出异常类的封装;

(3)使用的场景就是我们注册的时候填写自己的身份证号,名字,地址,以及这个密码,我们输入的身份证号不满18位就会抛出异常,密码不足八位的话就会抛出异常,我们可以自己输入并进行这个测试;

(4)我们定义了两个类,一个类里面就是这个基本的信息,另外的一个类就是包括的这个可能的异常情况,我们定义一个flag作为标记,如果这个过程里面出现异常情况,就会让这个flag变为1,如果这个flag变为1,我们就可以根据这个错误信息进行对应的打印;

我们在这个exceptions类里面定义这个flag,我们要想使用,就要先创建一个exceptions类的对象,然后在这个出现异常的时候进行这个错误信息的打印,并且给这个flag赋值为1;

因为这个抛出异常的类型都是相同的string类型的,因此我们可以使用一个catch语句进行这个异常的捕获即可。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/19120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STL库--stack

目录 stack的定义 stack容器内元素的访问 stack常用函数实例解析 stack的常见用途 stack的定义 其定义的写法和其他STL容器相同&#xff0c;typename可以任意基本类型或容器&#xff1a; stack<typename> name; stack容器内元素的访问 由于栈本身就是一种后进先出…

全球市值最高的能源公司沙特阿美股份拟出售,筹集百亿美元

KlipC报道&#xff1a;据5月28日市场消息&#xff0c;沙特政府可能最快会在本周宣布拟出售国营石油公司沙特阿美股份&#xff0c;筹集100亿-200亿美元。 沙特阿美是世界最大的石油生产商&#xff0c;2019年在沙特证交所上市。沙特的经济高度依赖石油出口。此前&#xff0c;受石…

论文笔记 Explicit Visual Prompting for Low-Level Structure Segmentations

通俗地解释视觉中的prompt 在视觉中的“prompt”&#xff08;提示&#xff09;可以用一种比较通俗的方式来理解&#xff1a; 什么是视觉中的提示&#xff1f; 想象一下&#xff0c;你有一个已经接受过大量训练的超级助手&#xff08;类似于预训练的模型&#xff09;&#xf…

【IOT】OrangePi+HomeAssistant+Yolov5智能家居融合

前言 本文将以OrangePi AIpro为基础&#xff0c;在此基础构建HomeAssistant、YOLO目标检测实现智能家居更加灵活智能的场景实现。 表头表头设备OrangePi AIpro(8T)系统版本Ubuntu 22.04.4 LTSCPU4核64位处理器 AI处理器AI算力AI算力 8TOPS算力接口HDMI2、GPIO接口、Type-C、M.2…

【YOLOv10】2024年5月最新的YOLO系列模型Yolov10(论文阅读笔记) + 完整创新点说明 + 总结

&#x1f680;&#x1f680;&#x1f680; YOLOv10: 实时端到端的目标检测。YOLOv10比最先进的YOLOv9延迟时间更低&#xff0c;测试结果可以与YOLOv9媲美&#xff0c;可能会成为YOLO系列模型部署的“新选择”。 官方论文地址&#xff1a;https://arxiv.org/pdf/2405.14458 官方…

怎么更改图片格式?图片在线转格式的使用方法

现在很多的平台在上传图片的时候&#xff0c;都会有规定要求的大小、格式、尺寸&#xff0c;只有符合要求的图片才可以正常上传。在网上传图时想要快速的修改图片格式&#xff0c;比较简单的一个方法就是在使用在线图片格式转换的工具就能够快速处理&#xff0c;下面将图片转格…

关于微信小程序低功耗蓝牙ECharts实时刷新(涉及自定义缓冲区)

简单的蓝牙显示&#xff08;串口手动发数据测试&#xff09; 最近搞了这方面的东西&#xff0c;是刚刚开始接触微信小程序&#xff0c;因为是刚刚开始接触蓝牙设备&#xff0c;所以这篇文章适合既不熟悉小程序&#xff0c;又不熟悉蓝牙的新手看。 项目要求是获取到蓝牙传输过来…

在线思维导图编辑!3个AI思维导图生成软件推荐!

思维导图&#xff0c;一种以创新为驱动的视觉化思考工具&#xff0c;已经渗透到我们日常生活和工作的各个角落。当我们需要整理思绪、规划项目或者梳理信息时&#xff0c;思维导图总能提供极大的帮助。 近些年随着云服务等基础设施的完善&#xff0c;我们可以看到越来越多提供…

ITIL4认证考试这么贵,还值得考证吗,有必要学吗?

从2023年4月1日开始&#xff0c;ITIL 4是Foundation认证将会捆绑OTM(Official Training Materials),这样在一次ITIL4的考试费中将会捆绑&#xff1a;试卷费电子教材书费监考费OTM费&#xff0c;每一种考试费都相较于2022年有涨幅&#xff0c;再加上PeopleCert收取的授权机构的授…

视频监控业务平台LntonCVS国标GB28181视频平台智慧城市应用方案

随着科技的不断进步&#xff0c;尤其是人工智能技术的飞速发展&#xff0c;视频应用已经超越了传统的视频监控、视频会议、视频通话和视频指挥调度等基本功能。它们正在向更加多元化、灵活化、融合化和智能化的方向发展。因此&#xff0c;建立一个视频AI中台变得至关重要。 通过…

持续领跑教育科技,网易有道再发“子曰”教育大模型全新应用

5月29日&#xff0c;网易有道“子曰”教育大模型媒体交流会在北京举行。会上&#xff0c;网易有道分享了子曰教育大模型最新技术进展及三大AI创新应用&#xff1a;AI全科学习助手“有道小P”APP、新一代虚拟人口语教练Hi Echo 3.0和新一代知识库问答引擎QAnything。 现场&…

基于STM32单片机老人体温心率血氧跌倒定位短信报警

一.硬件及设计功能 以STM32F103C8T6为中央处理器&#xff0c;GPS模块用采集数据&#xff0c;将数据发送给单片机后&#xff0c;单片机根据定位计算公式得出当前位置的经纬度信息和时间信息。经过LCD显示器处理后得出和时间信息SIM800模块发送短信到设定的手机号上&#xff0c;将…

17 C语言学生管理系统

学生管理系统 &#x1f44d;&#x1f602;&#x1f4af; 项目代码 代码可能存在细节上的错误&#xff0c;希望大家可以指导意见。 #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h> #include <stdlib.h> #include <string.h>#define MAX_STUDENTS 100…

conda修改环境名称后,无法安装包,显示no such file

1问题描述 原本创建环境时设置的名字不太合适&#xff0c;但是因为重新创建环境很麻烦&#xff0c;安装很多包。。所以想直接对包名进行修改&#xff0c;本人采用的方式是直接找到conda环境的文件目录&#xff0c;然后修改文件名&#xff0c;简单粗暴。确实修改成功了&#xf…

模拟集成电路(5)----单级放大器(共栅级)

模拟集成电路(5)----单级放大器&#xff08;共栅级&#xff09; 有一些场合需要一些小的输入电阻&#xff08;电流放大器&#xff09; 大信号分析 − W h e n V i n ≥ V B − V T H ∙ M 1 i s o f f , V o u t V D D − F o r L o w e r V i n I d 1 2 μ n C o x W L ( V…

手摸手教你uniapp原生插件开发

行有余力,心无恐惧 这篇技术文章写了得有两三个礼拜,虽然最近各种事情,工作上的生活上的,但是感觉还是有很多时间被浪费.还记得几年前曾经有一段时间7点多起床运动,然后工作学习,看书提升认知.现在我都要佩服那会儿的自己.如果想回到那种状态,我觉得需要有三个重要的条件. 其…

xcode依赖包package已经安装,但是提示No such module ‘Alamofire‘解决办法

明明已经通过xcode自带的swift包管理器安装好了依赖包&#xff0c;但是却还是提示&#xff1a;No such module&#xff0c;这个坑爹的xcode&#xff0c;我也只能说服气&#xff0c;但是无奈&#xff0c;没办法攻打苹果总部&#xff0c;只能自己想解决办法了 No such module Ala…

香港优才计划找中介是否是智商税,靠谱中介又该如何找?

关于香港优才计划的申请&#xff0c;找中介帮助还是自己DIY&#xff0c;网络上充斥的声音太多&#xff0c;对不了解的人来说&#xff0c;难以抉择的同时还怕上当受骗。 这其中很容易误导人的关键在于——信息差&#xff01; 今天这篇文章的目的就是想让大家看清一些中介和DIY…

MoE模型大火,源2.0-M32诠释“三个臭皮匠,顶个诸葛亮”!

文 | 智能相对论 作者 | 陈泊丞 近半年来&#xff0c;MoE混合专家大模型彻底是火了。 在海外&#xff0c;OpenAI的GPT-4、谷歌的Gemini、Mistral AI的Mistral、xAI的Grok-1等主流大模型都采用了MoE架构。而在国内&#xff0c;浪潮信息也刚刚发布了基于MoE架构的“源2.0-M3…

C++【缺省参数|函数重载|引用】

目录 1 缺省参数 1.1 全缺省 1.2 半缺省 注意 1.3 应用 2 函数重载 函数重载的概念 1、参数类型不同 2、参数个数不同 3、参数类型顺序不同 3 引用 3.1 引用概念 3.2 引用特性 3.3 常引用 3.4 使用场景 3.5 传值、传引用效率比较 3.6 引用和指针的区别 1 缺…