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

news2024/12/1 0:47:50

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

一起加油!

目录

前言:

打开文件与关闭文件: 

(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.coloradmin.cn/o/1391859.html

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

相关文章

HBase学习二:RegionServer详解

1、内部结构 RegionServer是HBase系统中最核心的组件&#xff0c;主要负责用户数据写入、读取等基础操作。RegionServer组件实际上是一个综合体系&#xff0c;包含多个各司其职的核心模块&#xff1a;HLog、MemStore、HFile以及BlockCache。 2、HLog 3、MemStore 4、HFile…

08- OpenCV:形态学操作(膨胀与腐蚀 、提取水平与垂直线)

目录 前言 一、膨胀&#xff08;Dilation&#xff09;与 腐蚀&#xff08;Erosion&#xff09; 二、形态学操作 1、开操作&#xff08;Opening&#xff09; 2、闭操作&#xff08;Closing&#xff09; 3、形态学梯度&#xff08;Morphological Gradient&#xff09; 4、…

【数学建模】美赛备战笔记 01 美赛指南与竞赛全流程

美赛指南 整篇论文需要在25页内。 六道赛题特点&#xff1a; A、B题涉及到微分方程和物理概念较多&#xff0c;需要一定的专业知识&#xff1b; C题常常涉及到时间序列、机器学习&#xff1b; D题一般是运筹学/网络科学&#xff0c;图论、优化问题&#xff0c;涉及到的概念多…

计算机视觉的应用

计算机视觉&#xff08;Computer Vision&#xff09;是一门研究如何让计算机能够理解和分析数字图像或视频的学科。简单来说&#xff0c;计算机视觉的目标是让计算机能够像人类一样对视觉信息进行处理和理解。为实现这个目标&#xff0c;计算机视觉结合了图像处理、机器学习、模…

【C++11】部分新特性

目录 1. 统一的列表初始化1.1 &#xff5b;&#xff5d;初始化1.2 std::initializer_list 2. 声明2.1 auto2.2 decltype 3. nullptr4. 右值引用和移动语义4.1 左值引用和右值引用4.2 左右值引用比较4.3 右值引用使用场景和意义4.4 完美转发 5. 新的类功能6. lambda表达式6.1 语…

vue安装、打包、发布

一.安装&#xff1a; 打开cmd命令行依次输入下面命令&#xff1a; 1. npm install -g vue/cli 2. vue create vue-demo(项目名) 3. 运行项目 npm run serve 二.打包&#xff1a; 在vscode打开终端输入以下命令&#xff1a; npm run build 打包成功后会生成一个dist文件夹&…

Python图像处理【18】边缘检测详解

边缘检测详解 0. 前言1. 图像导数2. LoG/zero-crossing2.1 Marr-Hildteth 算法 3. Canny 与 holistically-nested 算法3.1 Canny 边缘检测3.2 holistically-nested 边缘检测 小结系列链接 0. 前言 边缘是图像中两个区域之间具有相对不同灰级特性的边界&#xff0c;或者说是亮度…

好用的内外网快速传输大文件方法

在信息化时代&#xff0c;数据已经成为各行各业的关键资产&#xff0c;数据的传输和交换方式直接影响着数据价值的体现。在众多场景下&#xff0c;我们需要在不同的网络环境中进行文件传输&#xff0c;如同一个局域网内或者互联网上。这时涉及到内外网的概念。 内外网指的是在不…

PromptCast-时间序列预测的好文推荐

前言 这是关于大语言模型和时间序列预测结合的好文推荐&#xff0c;发现这篇文章&#xff0c;不仅idea不错和代码开源维护的不错&#xff0c;论文也比较详细&#xff08;可能是顶刊而不是顶会&#xff0c;篇幅大&#xff0c;容易写清楚&#xff09;&#xff0c;并且关于它的Br…

架构篇02-架构设计的历史背景

文章目录 机器语言&#xff08;1940 年之前&#xff09;汇编语言&#xff08;20 世纪 40 年代&#xff09;高级语言&#xff08;20 世纪 50 年代&#xff09;第一次软件危机与结构化程序设计&#xff08;20 世纪 60 年代~20 世纪 70 年代&#xff09;第二次软件危机与面向对象&…

什么是防火墙?

目录 什么是防火墙&#xff0c;为什么需要防火墙&#xff1f;防火墙与交换机、路由器对比防火墙和路由器实现安全控制的区别防火墙的发展史1989年至1994年1995年至2004年2005年至今 什么是防火墙&#xff0c;为什么需要防火墙&#xff1f; “防火墙”一词起源于建筑领域&#x…

十一、Qt Poppler打包

《一、QT的前世今生》 《二、QT下载、安装及问题解决(windows系统)》《三、Qt Creator使用》 ​​​ 《四、Qt 的第一个demo-CSDN博客》 《五、带登录窗体的demo》 《六、新建窗体时&#xff0c;几种窗体的区别》 《七、Qt 信号和槽》 《八、Qt C 毕业设计》 《九、Qt …

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用相机日志跟踪功能(C++)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用相机日志跟踪功能&#xff08;C&#xff09; Baumer工业相机Baumer工业相机NEOAPI SDK和短曝光功能的技术背景Baumer工业相机通过NEOAPI SDK使用相机日志跟踪功能1.引用合适的类文件2.通过NEOAPI SDK使用相机日志跟踪功能3.通…

java绩效考核系统

一、系统介绍 本系统为绩效考核系统&#xff0c;系统分为三大模块&#xff1a;考核设置&#xff0c;绩效考核&#xff0c;系统管理。 可满足小企业对员工进行考核。本系统最大特色是有强大和灵活的权限控制功能&#xff0c;所有菜单&#xff0c;按钮功能均可由管理通过配置来控…

【开源】基于JAVA语言的网上药店系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 药品类型模块2.3 药品档案模块2.4 药品订单模块2.5 药品收藏模块2.6 药品资讯模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 角色表3.2.2 药品表3.2.3 药品订单表3.2.4 药品收藏表3.2.5 药品留言表…

AIOps探索 | 基于大模型构建高效的运维知识及智能问答平台(2)

前面分享了平台对运维效率提升的重要性和挑战以及基于大模型的平台建设解决方案&#xff0c;新来的朋友点这里&#xff0c;一键回看精彩原文。 基于大模型构建高效的运维知识及智能问答平台&#xff08;1&#xff09;https://mp.csdn.net/mp_blog/creation/editor/135223109 …

十、Qt 操作PDF文件

《一、QT的前世今生》 《二、QT下载、安装及问题解决(windows系统)》《三、Qt Creator使用》 ​​​ 《四、Qt 的第一个demo-CSDN博客》 《五、带登录窗体的demo》 《六、新建窗体时&#xff0c;几种窗体的区别》 《七、Qt 信号和槽》 《八、Qt C 毕业设计》 《九、Qt …

常见框架漏洞

1.什么是框架 Web框架(Web framework)或者叫做Web应用框架(Web application framework)&#xff0c;是用于进行Web开发的一套软件架构。大多数的Web框架提供了一套开发和部署网站的方式。为Web的行为提供了一套支持的方法。使用Web框架&#xff0c;很多的业务逻辑外的功能不需…

使用arcgis pro是类似的控件样式 WPF

1.资源加载 <controls:ProWindow.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><extensions:DesignOnlyResourceDictionary Source"pack://application:,,,/ArcGIS.Desktop.Framework;component\Themes\Default.xaml&quo…

考研机试题收获——高精度进制转换

代码的第一遍真的很重要&#xff0c;在第一次打的时候尽量把问题思考全面&#xff0c;不要漏打少打&#xff0c;尽量不要留bug给之后de。 一、基础方面 一、处理输出的结束问题 scanf和cin默认都不会读取空格 ①scanf()&#xff1a;如果从文件中读取数据&#xff0c;当scanf()…