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

 

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

一起加油!

       数据从键盘流入内存,或者从内存流出到显示器都离不开输入/输出操作。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流的理解,请持续关注我哦!!! 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nginx配置反向代理实例二

Mac 安装Nginx教程 Nginx配置反向代理实例一 提醒一下&#xff1a;下面实例讲解是在Mac系统演示的&#xff1b; 反向代理实例二实现的效果 使用nginx 反向代理&#xff0c;根据访问的地址跳转到不同端口的服务中 nginx 监听端口为81&#xff1b; 访问地址1&#xff1a;http:/…

QTday4作业

思维导图: widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime> #include <QTimerEvent> #include <QPushButton> #include <QTextToSpeech> #include <QDebug>namespace Ui { class Widget; }class Widget…

实现稳定的联合显著性检测和联合目标分割

1 Title Toward Stable Co-Saliency Detection and Object Co-Segmentation(Bo Li; Lv Tang; Senyun Kuang; Mofei Song; Shouhong Ding)【IEEE Transactions on Image Processing 2022】 2 Conclusion This paper present a novel model for simultaneous stable co-saliency…

数据分析讲课笔记01:数据分析概述

文章目录 零、学习目标一、本次课程概述二、数据分析的背景&#xff08;一&#xff09;进入大数据时代&#xff08;二&#xff09;数据分析的作用 三、什么是数据分析&#xff08;一&#xff09;数据分析的概念&#xff08;二&#xff09;数据分析的分类1、描述性数据分析2、探…

公网环境使用移动端设备+cpolar远程访问本地群晖nas上的影视资源

文章目录 1.使用环境要求&#xff1a;2.下载群晖videostation&#xff1a;3.公网访问本地群晖videostation中的电影&#xff1a;4.公网条件下使用电脑浏览器访问本地群晖video station5.公网条件下使用移动端&#xff08;搭载安卓&#xff0c;ios&#xff0c;ipados等系统的设备…

WiFi7无线路由器TL-7DR6560简单开箱测评

TPLINK/普联 TL-7DR6560易展Turbo版 BE6500 双频WiFi7无线路由器简单开箱测评&#xff0c;4个2.5G网口&#xff0c;6颗独立FEM&#xff0c;双频6流。 TP-LINK XDR6088 WiFi6路由器 简单开箱评测&#xff1a;https://blog.zeruns.tech/archives/731.html 分享一下我家网络机柜…

Macos下修改Python版本

MacOS下修改Python版本 安装 查看本机已安装的Python版本&#xff1a;where python3 ~ where python3 /usr/bin/python3 /usr/local/bin/python3 /Library/Frameworks/Python.framework/Versions/3.12/bin/python3如果没有你想要的版本&#xff0c;去python官网下载安装包。…

Day4Qt

1.头文件: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime>//时间类 #include <QTimer>//时间事件类 #include <QTimerEvent>//定时器类 #include <QTextToSpeech> namespace Ui { class Widget; }class Widget : publi…

esp32-cam使用SD卡/web端保存拍摄图片到本地

目录 一、esp32-cam运行esp-who的人脸识别报错 二、挂载sd卡到esp32-cam&#xff0c;并将拍摄的图片保存到sd卡三、通过web示例对拍摄的图片进行保存 保存拍摄图片主要是想加在人脸识别这个项目中&#xff0c;所以先把人脸识别示例跑通&#xff0c;然后在把挂在sd卡的部分放进来…

7.云原生之jenkins集成SonarQube

1. 私有云实战之基础环境搭建 2. 云原生实战之kubesphere搭建 3.云原生之kubesphere运维 4. 云原生之kubesphere基础服务搭建 5.云原生安全之kubesphere应用网关配置域名TLS证书 6.云原生之DevOps和CICD 7.云原生之jenkins集成SonarQube 8.云原生存储之Ceph集群 文章目录 搭建 …

美国证券交易委员会 X 账户被黑,引发比特币市场震荡

Bleeping Computer 网站消息&#xff0c;威胁攻击者成功“占领”了美国证券交易委员会的 X 账户&#xff0c;并发布一条关于批准比特币 ETF 在证券交易所上市的虚假公告。 帖子原文&#xff1a;今天&#xff0c;美国证券交易委员会批准比特币 ETF 在注册的国家证券交易所上市&a…

Blazor快速开发框架Known-V2.0.0

Known2.0 Known是基于Blazor的企业级快速开发框架&#xff0c;低代码&#xff0c;跨平台&#xff0c;开箱即用&#xff0c;一处代码&#xff0c;多处运行。 官网&#xff1a;http://known.pumantech.comGitee&#xff1a; https://gitee.com/known/KnownGithub&#xff1a;ht…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux系统编程第十天-Linux下mplayer音乐播放器练习题(物联技术666)

更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。 物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机…

实现接口自动化测试

最近接到一个接口自动化测试的case&#xff0c;并展开了一些调研工作&#xff0c;最后发现&#xff0c;使用pytest测试框架并以数据驱动的方式执行测试用例&#xff0c;可以很好的实现自动化测试。这种方式最大的优点在于后续进行用例维护的时候对已有的测试脚本影响很小。当然…

CAN201 计网概念收集

Lecture 1 the theoretical basis for networking Network edge and core 地理覆盖范围&#xff1a;广WAN&#xff0c;城MAN&#xff0c;局LAN&#xff0c;个PAN 交换方式&#xff0c;电路&#xff0c;报文&#xff0c;分组 电路交换vs报文vs分组 Network performance pr…

[AutoSar]基础部分 RTE 07 VFB虚拟功能总线

目录 关键词平台说明一、VFB1.1VFB是什么1.1VFB的好处1.2VFB的坏处 二、VFB在ECU内部的描述2.1Components2.2 Port-Interfaces2.3 Port2.4 Compositions 关键词 嵌入式、C语言、autosar、VFB 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C&#xff0…

浅析NVMe key per IO加密技术-3

三、Key per IO行业规范支持情况 Key Per I/O功能在行业规范中的支持情况&#xff1a; NVMe标准已经批准并采纳了NVMe TP4055提案&#xff0c;明确支持并定义了如何使用每个I/O操作独立的加密密钥技术。这意味着NVMe设备可以实现对每一个数据传输请求进行单独加密&#xff0c;…

降压恒压 耐压DC60V芯片,SL3037B替代HT7463A、兼容替代HT7463B

在当今的电子设备中&#xff0c;电源管理芯片扮演着至关重要的角色。它们负责为设备提供稳定的电压&#xff0c;确保设备的正常运行。然而&#xff0c;随着技术的不断发展&#xff0c;一些传统的电源管理芯片已经无法满足现代设备的需要。此时&#xff0c;寻找一种能够替代传统…

0111qt

实现闹钟&#xff0c;并播报懒虫...~ daytest.pro: QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (th…

nginx和CDN应用

一、代理的工作机制 1&#xff0e;代替客户机向网站请求数据&#xff0c;从而可以隐藏用户的真实IP地址。 2&#xff0e;将获得的网页数据&#xff08;静态 Web 元素&#xff09;保存到缓存中并发送给客户机&#xff0c;以便下次请求相同的数据时快速响应。 二、代理服务器的…