C++I/O流——(1)I/O流的概念

news2024/11/17 3:31:19

 

归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝
勤奋,机会,乐观是成功的三要素!

一起加油!

       数据从键盘流入内存,或者从内存流出到显示器都离不开输入/输出操作。C++语言中没有输人输出语句,这样做的目的是为了最大限度地保证语言与平台的无关性,保证输入/输出的操作不被限制在某一个操作系统上。为此,C++内嵌了一个的输入/输出工具包,支持对文件以及一些I/O设备的读写操作,这个工具包就是 I/O 流标准库,通过这个标准库,用户不仅可以直接针对系统已有的数据类型进行输入/输出操作,还可以通过重载运算符对用户自己定义的数据类型对象进行I/O操作。

        C语言中的输入/输出都是由库函数(如scanf和printf来实现的。往往不能保证数据输入/
输出的可靠性。例如,printf("%d","hello");其中格式控制%d错误,但是编译系统并不会报错而是输出字符串的起始地址;又例如:int scanf("%d",a)语中漏写了"&”,但序编译时同样不会检查出错误,而把 a 的值作为地址,将输入的数据存放到该地址所代表的内存中,引起运行出错。C++利用I/O流(如cin和 cout)进行简单的输入/输出编译系统对数据类型进行严格的检查,凡是类型不正确的数据都不能通过编译。因此C++的I/O操作可以保证类型安全。另外,C++的类机制使得它能建立一套可扩展的 I/O系统,通过修改和扩充,能用于用户自己声明的类型的对象的输人/输出。例如,对运算符“<<”和“>>”的重载就是扩展的例子。可扩展性提高了软件的重用性,提高了软件开发的效率。由此,我们可以看到C++在输入/输出方面相比 C 语言的优势所在接下来,将详细的介绍C++输入/输出流。

        数据输入和输出的过程就像流水一样,从一处流向另一处在C++中称为流(Stream),在数据流中流动的是若字节序列通常把数据从输入设备(如键盘和磁盘)流入到程序(内存)的过程称为输入流,而当数据从程序(内存)流出到输出设备(如屏幕、打印机、磁盘等)的过程称为输出流。输入流和输出流中的内容可以括ASCIl码、二进制数据、图像视频音频等各种格式的信息。 

        输入流和输出流都带有内存缓冲区,用来存放流中的数据。当用cout和插入运算符“<<”向显示器输出数据时,先把数据插入到输出流(cout 流),送到程序的输出缓冲区保存,指导缓冲区满了或者遇到endl,就将缓冲区中的全部数据送到显示器显示。在输入时,从键盘输入的数据先放到键盘的缓冲区中。当按回车键时,键盘缓冲区中的数据输入到程序中的输入缓冲区,形成cin 流,然后用提取运算符“>>”从输入缓冲区中提取数据送给程序的有关变量。
        在C++中,将输入流和输出流都分别定义为类,这些类放在 C++语言的 I/O 类库中cin和cout都是iostream类的流对象。
        C++包含一系列流类库,这些流类库是用继承方式建立起来的用于输入/输出的类库。这些类有两个基类:ios类和streambuf类,其他流类都是从这两个基类派生出来的。通过C++流类库,可以实现丰富的I/O功能。

        ios类是输入/输出操作在用户端的接口,提供输入/输出服务。streambuf是处理流缓冲区的类是数据在缓冲区中的管理和数据输入/输出缓冲区的实现。也就是说,ios 负责上层操作,而streambuf负责底层操作,为ios 提供物理级支持。

iostream

ios抽象基类
istream通用输入流和其他输入流的基类
ostream通用输出流和其他输出流的基类
iostream通用输入/输出流和其他输入/输出流的基类

fstream
ifstream输入文件流类
ofstream输出文件流类
fstream输入输出文件流类

strstream
istrsteam输入字符串流类
ostrstream输出字符串流类
strstream输入/输出字符串流类

流类库的定义包含在如下几个头文件中。

        <iostream>;包括istream、ostream iostream 以及cin、cout、ceer 和clog对象的定义,同时也提供了非格式化和格式化的 I/O 服务。若要进行针对标准设备的 I/O 操作则必须包含此文件<strstream>:包含istrstream、ostrstream、strstream的定义,若要使用字符串流象进行针对内存字符串空间的 I/O 操作,则必须包含此文件。

        <fstream>:包含ifstream、ofstream、fstream定义,若要使用文件流对象进行针对磁盘文件的I/O操作,则必须包含此文件。

        <iomanip>:在使用格式化I/时应含此头文件括sets、fixed等操作符的定义含此文件后才能利用操作符函数进行格式化I/O操作。 

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

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

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

相关文章

小红书私信组件功能解读,商家如何使用

今年八月&#xff0c;小红书私信组件上新了两大新功能。新功能的出现&#xff0c;无疑为商家与消费者的沟通建联&#xff0c;提供了新的可能。今天我们来针对小红书私信组件功能解读&#xff01; 一、小红书私信组件新功能 这次小红书私信组件上新的两大功能分别是&#xff0c;…

SQL-分页查询and语句执行顺序

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

Inis博客系统本地部署结合内网穿透实现远程访问本地站点

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总…

011集:复制txt文件(编码:ANSI复制到UTF-8模式)—python基础入门实例

下面给出一个文本文件复制示例。 代码如下&#xff1a; f_name rD:\mytest2.txt with open(f_name, r, encodinggbk) as f:lines f.readlines()copyfile rD:\copytest2.txtwith open(copyfile, w, encodingutf-8) as copy_f:copy_f.writelines(lines)print(文件复制成功) …

YOLOv8改进 | 二次创新篇 | 在Dyhead检测头的基础上替换DCNv3 (全网独家首发)

一、本文介绍 本文给大家带来的改进机制是在DynamicHead上替换DCNv3模块,其中DynamicHead的核心为DCNv2,但是今年新更新了DCNv3其作为v2的升级版效果肯定是更好的,所以我将其中的核心机制替换为DCNv3给Dyhead相当于做了一个升级,效果也比之前的普通版本要好,这个机制我认…

【2023年度总结与2024展望】---23年故事不长,且听我来讲

文章目录 前言一、学习方面1.1 攥写博客1.2 学习内容1.3 参加比赛获得证书 二、生活方面2.1写周报记录生活 三、运动方面四、CSDN的鼓励五、24年展望总结 前言 时光飞逝&#xff0c;又是新的一年&#xff0c;遥想去年2023年我也同样在这个时间段参加了CSDN举办的年度总结活动&a…

数据库期末复习重点总结

数据库期末复习重点总结 本文为总结&#xff0c;如有不对的地方请指针 第2章 关系模型的介绍 名称符号选择σ投影∏笛卡儿积连接并∪集差-交∩赋值<-更名ρ 除操作 设R和S除运算的结果为T&#xff0c;则T包含所有在R中但不在S中的属性和值&#xff0c;且T的元组与S的元…

数据结构(三)堆和哈希表

目录 哈希表和堆什么是哈希表 &#xff1f;什么是堆 &#xff1f;什么是图 &#xff1f;案例一&#xff1a;使用python实现最小堆案例二 &#xff1a; 如何用Python通过哈希表的方式完成商品库存管理闯关题 &#xff08;包含案例三&#xff1a;python实现哈希表&#xff09; 本…

highlight.js 实现搜索关键词高亮效果

先看效果&#xff1a; 折腾了老半天&#xff0c;记录一下 注意事项都写注释了 代码&#xff1a; <template><div class"absolute-lt wh-full overflow-hidden p-10"><div style"width: 200px"><el-input v-model"keyword"…

OpenCV-Python(33):SURF算法

目标 SUFR 是什么OpenCV 中的SURF 原理 学习了解过SIFT 算法后我们知道&#xff0c;它是对图像关键点进行检测和描述的&#xff0c;具有尺度不变的特性&#xff0c;但是这种算法的执行速度比较慢&#xff0c;人们需要速度更快的算法。2006年Bay,H.,Tuytelaars,T. 和Van Gool,…

智能化项目管理平台:功能丰富、操作简单、降低成本、提高效率

华西建筑智能化团队打造的项目管理平台非常实用和便捷&#xff0c;为现场管理人员提供了极大的便利。以下是对该平台的详细分析&#xff1a; 一、功能丰富 该平台为现场管理人员提供了多种功能&#xff0c;包括工人打卡、材料检验入库、施工质量检查、施工日志编写、施工进度…

vue3dLoader Cannot read properties of null (reading ‘setCrossOrigin‘)“这个报错怎么解决?

默认情况下crossOrigin默认值是“anonymous” 如果出现报错的情况 请设置crossOrigin为空字符串即可。如&#xff1a; <vue3dLoader crossOrigin""> 相关阅读 推荐&#xff1a;vue-3d-loader支持.dae/.fbx/.gltf/.glb/.obj/.ply/.stl/.json&#xff0c;并支…

书生·浦语大模型实战营-学习笔记1

目录 书生浦语大模型全链路开源体系数据集预训练微调评测部署多智能体 视频地址&#xff1a; (1)书生浦语大模型全链路开源体系 开源工具github&#xff1a; https://github.com/InternLM/InternLM 书生浦语大模型全链路开源体系 这次视频中介绍了由上海人工智能实验室OpenMMLa…

入选人民网2023普惠金融优秀案例,合合信息旗下启信宝赋能银行对公信贷数字化转型

普惠金融承载着改善民生、促进实体经济发展的重要职责&#xff0c;近十年来&#xff0c;普惠金融发展取得了长足进步&#xff0c;多层次普惠金融供给格局逐步确立。银行作为金融体系的重要组成部分&#xff0c;高效工作是构建普惠金融体系的重要推动力。 立足于十年的历史节点…

mmdet tools 使用指南

MMDetection 是一个基于 PyTorch 的目标检测开源工具箱。它是 OpenMMLab 项目的一部分。 主分支代码目前支持 PyTorch 1.8 及其以上的版本。 使用前提 (1)mmdet使用手册地址 https://mmdetection.readthedocs.io/zh-cn/latest/user_guides/index.html#id2 (2)第一次运行前请…

观测云产品更新 | 日志、场景仪表板、监控器等

观测云更新 用户访问监测 &#xff08;RUM &#xff09; 公网 Dataway 支持 ip 转换成地理位置信息。 日志 > 查看器详情页 1、新增 BPF 网络日志采集及日志详情页&#xff0c;支持 Json 格式转化&#xff1b; 2、上述 1 中的日志详情页中新增可读的展示模式&#xff0c…

SpringBoot 把PageHelper分页信息返回给前端

第1步&#xff1a;定义线程容器收纳HttpHeaders和HttpStatus import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus;public class ResponseUtils {private static ThreadLocal<HttpHeaders> ThreadLocalHeaders new InheritableT…

鸿蒙开发已解决-arkts编译报错-arkts-limited-stdlib错误

文章目录 项目场景:问题描述原因分析:解决方案:适配指导案例此Bug解决方案总结项目场景: arkts编译报错-arkts-limited-stdlib错误。 我用Deveco studio4.0 beta2开发应用,报arkts-limited-stdlib错误 报错内容为: ERROR: ArKTS:ERROR File: D:/prRevivw/3792lapplica…

前端 TS 语法 接口(2)

介绍 TypeScript的核心原则之一是对值所具有的shape进行类型检查。 它有时被称做“鸭式辨型法”或“结构性子类型化”。 在TypeScript里&#xff0c;接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。 只读属性 readonly 一些对象属性只能在对象刚刚创建的…

使用Python爬取小红书笔记与评论(js注入方式获取x-s)

文章目录 1. 写在前面2. 分析加密入口3. 使用JS注入4. 爬虫工程化 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xff01; 【作者推荐】&#xff1a;对JS逆向感…