C++I/O流——(3)文件输入/输出(第一节)

归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝
含泪播种的人一定能含笑收获!

一起加油!

目录

前言:

打开文件与关闭文件: 

(1)通过创建fstream类对象打开文件格式如下:

(2)通过创建 istream 或 ostream 类对象打开文件:

2.关闭磁盘文件: 


前言:

        文件是存储在外部介质(如磁盘、光盘、U 盘)上的数据的集合。操作系统是以文件为单位对数据进行管理的。对于用户来说,常用的文件主要有两大类:一类是程序文件另一类是数据文件。在程序运行时,常常需要将一些数据输出到磁盘上存放,在以后需要时再从磁盘中输人到计算机内存,这种磁盘文件就是数据文件。程序中的输入和输出的对象就是数据文件。根据文件中数据的组织形式,可以将其分为 ASCIl文件和二进制文件。ASCII文件又称为文本文件或者字符文件,按字节存放 ASCIl码:二进制文件又称为内部格式文件,是把内存中的数据按在内存中的存储形式原样输出到磁盘。
        前面介绍的 C++的流对象 cin和 cout 只能处理C++中以标准设备为对象的输入/输出而不能处理以磁盘文件为对象的输入/输出。要处理以磁盘文件为对象的输入/输出,必须另外定义以磁盘文件为对象的输入/输出流对象。在 C++的 I/O 类库中定义了几种文件类专门用于对磁盘文件的输入/输出操作。例如,以下三个为可用于文件操作的文件类:

  • (1)ifstream类,它是从 istream类派生的,用来支持从磁盘文件的输入;
  • (2)ofstream 类,它是从 ostream 类派生的,用来支持向磁盘文件的输出;
  • (3)fstream 类,它是从 iostream 类派生的,用来支持对磁盘文件的输入/输出

打开文件与关闭文件: 

1.打开磁盘文件:

        打开文件是指在文件读写之前做好准备工作,包括:为文件流对象和指定的磁盘文件建立关联。以便使文件流流向指定的磁盘文件,指定文件的工作方式,如该文件是作为输入还是输出是ASCIl文件还是二进制文件等。 

        以上工作可以通过两种方法实现:

(1)通过创建fstream类对象打开文件格式如下:

fstream <对象名>;
<对象名>.open("<文件名>",<访问方式>); 

以上两行可以省略函数 open,合并写成: 

fstream <对象名>("<文件名>",<访问方式>);

其中,<文件名>是被打开文件的全名;<访问方式>包括读、写、又读又写、二进制方式等。 

        调用文件流的成员函数 open 打开磁盘文件 f1.dat,并指定它作为输出文件。文件流对象 outfile将向磁盘文件 f1.dat 输出数据。ios::out 是 I/O 模式的一种,表示以输出方式打开一个文件。此时f1.dat 是一个输出文件,接收从内存输出的数据。磁盘文件名可以包括路径,如“d:\f1.dat”,如果缺省路径,则默认为当前目录下的文件。 

访问方式是在 ios 类中定义的,它们是枚举常量,有多种选择:

  • ios::in以输入方式(读)打开文件
  • ios::out以输出方式(写)打开文件,如果已有此名字的文件,则将原有内容清除
  • ios::app以输出方式打开文件,写入的数据添加在文件末尾
  • ios::ate打开一个已有的文件,文件指针指向文件末尾
  • ios::trunc打开一个文件,如果文件已存在则删除全部数据,如文件不存在则建立新文件
  • ios.:binary以二进制方式打开文件,如不指定此方式则默认为 ASCIl方式
  • ios::nocreate打开已有的文件,如不存在,则打开失败
  • ios::noreplace如果文件不存在则建立新文件,如文件存在则操作失败
  • ios::in | ios.:out以输入和输出方式打开文件,文件可读可写
  • ios::out | ios::binary以二进制方式打开输出文件
  • ios::in|ios::binary以二进制方式打开输入文件 

新版本的 I/O 类库中不提供 ios::nocreate 和 ios::noreplace。 

 如果打开操作失败,open 函数的返回值为 0,可以根据返回值测试打开是否成功。

(2)通过创建 istream 或 ostream 类对象打开文件:

格式如下:ofstream <对象名>;
<对象名>.open("<文件名>");

 或者

ifstream <对象名>;
<对象名>.open(”<文件名>");

以上两行可以省略函数open,合并写成:

ofstream <对象名>("<文件名>");

或者
ifstream <对象名>(”<文件名>”); 

         用ofstream 类定义文件流对象,只能向它写入数据,不能从中读取数据,因此,参数ios::out可以省略;同理,用ifstream 类定义文件流对象时,参数 ios::in 可以省略。

2.关闭磁盘文件: 

在对已打开的磁盘文件的读写操作完成后,应关闭文件。关闭文件用成员函数 close。其格式如下:

<对象名>.close(); 

关闭,实际上就是解除该磁盘文件与文件流的关联,使得原来设置的工作方式失效,不能再通过文件流对该文件进行输入/输出。 

        以上就是我对C++I/O流——(3)文件输入/输出(第一节)的理解,希望本篇文章对你有所帮助,也希望可以支持支持博主,后续博主也会定期更新学习记录,记录学习过程中的点点滴滴。如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对C++I/O流的理解,请持续关注我哦!!!

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

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

相关文章

【python入门】day27: 模拟高铁售票系统

界面 代码 #-*- coding:utf-8 -*- import prettytable as pt#---------导入漂亮表格 import os.path filename ticket.txt#更新座位状态 def update(row_num):#------更新购票状态with open(filename,w,encodingutf-8) as wfile:for i in range(row_num):lst1 [f{i1},有票,有…

java自动化将用例和截图一起执行测试放入world中直接生成测试报告【搬代码】

1.首先我们得用例写好之后放入文档中,把不用的案例类型、前置条件去掉之后,如图: 放到桌面后,先看执行结果: 首先,我们先创建一个时间,这个时间主要是给图片创建名称,并且要在插入world中使用该时间去查找对应的图片名称,且该图片名称是唯一值 //创建时间public st…

原生js监听当前元素之外的点击事件

监听当前元素之外的点击事件 一、具体场景二、具体实现三、完整代码 一、具体场景 当我们需要实现点击其他位置关闭弹窗的时候&#xff0c;就需要监听当前元素之外的点击事件。 二、具体实现 实现思路&#xff1a;监听整个dom的点击事件&#xff0c;判断当前元素是否包含点击…

Qt 信号和槽机制

一. 简介 在Qt中使用信号和槽机制来完成对象之间的协同操作。简单来说&#xff0c;信号和槽都是函数&#xff0c;比如按下窗口上的一个按钮后想要弹出一个对话框&#xff0c;那么就可以将这个按钮的单击信号和我们定义的槽关联起来&#xff0c;在这个槽中可以创建一个对话框&am…

训练DAMO-YOLO(damoyolo_tinynasL25_S.py)

文章目录 参考链接1 准备数据1.1 转为COCO格式1.2 指明数据路径 2 设置训练配置文件&#xff0c;在configs/damoyolo_tinynasL25_S.py进行如下两块修改2.1 关于训练参数的设置2.2 根据自己数据集设置 3 开始训练4 调用tools/eval.py进行测试5 训练时可能遇到的报错5.1 RuntimeE…

详解Matlab深度学习进行波形分割

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 &#x1f510;#### 防伪水印——左手の明天 ####&#x1f510; &#x1f497; 大家…

C#编程-实现委托

实现委托 委托是可以存储对方法的引用的对象。在C#中,委托允许您动态地改变类中方法的引用。 考虑咖啡售货机的示例,它配置不同口味的咖啡,例如卡布奇诺咖啡和黑咖啡。在选择所需口味的咖啡时,售货机决定混合各种成分,例如奶粉、咖啡粉、热水、卡布奇诺咖啡粉。所有的材…

.Net Core 使用 AspNetCoreRateLimit 实现限流

上一篇文章介绍过ASP.NET Core 的 Web Api 实现限流 中间件-CSDN博客 使用.NET 7 自带的中间件 Microsoft.AspNetCore.RateLimiting 可以实现简单的Api限流&#xff0c;但是这个.NET 7以后才集成的中间件&#xff0c;如果你使用的是早期版本的.NET&#xff0c;可以使用第三方库…

React函数式组件学习笔记

React是一种用于构建用户界面的JavaScript库&#xff0c;它采用组件化的方式来构建复杂的UI。在React中&#xff0c;函数式组件是一种声明式的方式去描述UI的状态和行为。 React的特性 1.声明式设计-React采用声明范式&#xff0c;可以轻松描述应用 2.高效-React通过对DOM的模…

LaTeX系列1——主结构

初学&#xff0c;可交流&#xff0c;轻喷 \documentclass{book} \begin{document} \title{Book Title} \author{Author Name} \date{\today} \maketitle\chapter{Introduction} This is the introduction chapter of the book.\section{First Section} The first section of t…

【算法】使用栈解决一系列算法题(匹配、表达式、模拟)(C++)

1. 前言&#xff08;栈适用于解哪些题&#xff1f;&#xff09; 栈适合解决需要后进先出&#xff08;LIFO&#xff09;的结构的算法题&#xff0c;例如&#xff1a; 括号匹配问题&#xff1a;判断给定字符串中括号是否匹配。表达式求值问题&#xff1a;将表达式转换为后缀表达…

《每天一分钟学习C语言·十二》各种指针问题

1、 int arr; int * restrict pt &arr; *pt 100; *arr 10;注&#xff1a;restrict只能修饰指针&#xff0c;被restrict修饰的指针指向一块内存后这块内存就归这个指针管理了&#xff0c;其他任何指针都不能修改这块内存的内容&#xff0c;这是一个约定&#xff0c;当…

微信公众号注册(详细图文教程)

目录 一、公众号注册准备1.1 准备事项1.2 个人注册1.3 企业注册 二、公众号注册2.1 基本信息填写2.2 选择类型2.3 信息登记2.4 公众号信息2.5 修改头像2.6 自动回复消息 三、总结 一、公众号注册准备 1.1 准备事项 公众号名称&#xff1a;公众号名称可以由中文、英文、数字、…

李宏毅LLM——ChatGPT原理剖析

文章目录 Chat-GPT引言关键技术——预训练研究问题玩文字冒险游戏 ChatGPT原理剖析 Chat-GPT引言 直观感受&#xff1a;结果有模有样、每次输出结果都不同、可以追问、幻想出的答案误解&#xff1a;罐头回答、答案是网络搜索的结果真正做的事&#xff1a;文字接龙&#xff0c;…

Spring Cloud中的提供者与消费者

在服务调用关系中&#xff0c;会有两个不同的角色&#xff1a; 服务提供者&#xff1a;一次业务中&#xff0c;被其它微服务调用的服务。&#xff08;提供接口给其它微服务&#xff09; 服务消费者&#xff1a;一次业务中&#xff0c;调用其它微服务的服务。&#xff08;调用…

Artipelag创意艺术展:在斯德哥尔摩的桥边,遇见莫奈!

近期&#xff0c;位于瑞典斯德哥尔摩的Artipelag 艺术博物馆策划了一场名为《想象莫奈》&#xff08;Imagine Monet&#xff09;的艺术展。 Artipelag除了通过传统的社交媒体来做宣传&#xff0c;还联合广告公司Sweet在线下策划了一次特别的宣传活动&#xff0c;以此来致敬这位…

nginx基本优化

安装nginx隐藏版本号 查看百度web服务器 [rootcjq11 ~]# curl -I http://www.baidu.com 隐藏nginx服务器版本号 [rootcjq11 ~]# cd /usr/local/src/nginx-1.22.0/ [rootcjq11 nginx-1.22.0]# vim src/core/nginx.h第13、14行修改版本号和服务器名称 [rootcjq11 nginx-1.2…

HAL库配置RS485通信

在配置好串口的基础上完成RS485的配置 一、使能RS485的发送和接收模式引脚 __HAL_RCC_GPIOG_CLK_ENABLE();//高电平是发送模式&#xff0c;低电平是接收模式&#xff0c;默认是接收模式HAL_GPIO_WritePin(PG4_RS485_DIR1_Port, PG4_RS485_DIR1_Pin, GPIO_PIN_RESET);GPIO_Init…

特征工程-特征处理(三)

特征处理 连续型变量处理&#xff08;二&#xff09; 多特征 降维 PCA PCA是一种常见的数据分析方式&#xff0c;通过数据分解&#xff0c;将高维数据降低为低维数据&#xff0c;同时最大程度保持数据中保存的信息。 from sklearn.decomposition import PCA A np.array([[84…

计算机毕业设计----SSH滑雪场场地租赁管理系统

项目介绍 该项目主要包括三个角色&#xff1a;管理员、收银员、用户&#xff1b; 用户角色包含以下功能&#xff1a; 用户登录,修改个人信息,查看我的订单等功能。 管理员角色包含以下功能&#xff1a; 管理员登录,滑雪场管理,订单管理,教练管理,器材管理,会员管理,收银员管…