输入输出(1)——C++的输入输出概述

目录

一、C++的输入输出

(一)  C++的输入输出

(二)C语言的scanf和printf

二、C++的输入输出流

(一)   iostream类库中有关的类

(二) iostream.h头文件的流对象和重载运算符


一、C++的输入输出

(一)  C++的输入输出

之前用到的输入输出,都是以终端为对象——即从键盘输入数据,运行结果到显示器屏幕上。

操作系统把每一个与主机相连的输入输出设备都看作为一个文件键盘是输入文件,显示器和打印机是输出文件,除了以终端为对象进行输入输出以外,还经常用磁盘或光盘作为输入输出对象,磁盘文件可以作为输入文件,也可以作为输出文件。

C++的输入输出包括三个方面:
(1)对系统指定的标准设备的输入输出,简称为标准I/O。例如:从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出。

(2)以磁盘或者光盘文件为对象进行的输入输出,简称为文件I/O。例如:从磁盘文件输入数据给程序,程序的数据输出到磁盘文件。这种以外存文件为对象的输入输出称为文件的输入输出。

(3)对内存中指定的空间进行输入输出。简称串I/O。例如:指定一个字符数组为存储空间(实际该空间可以存储任何信息)。这种以输入输出称为字符串的输入输出。

(二)C语言的scanf和printf

在C语言中,用scanf和printf进行输入输出,%d是用来输出一个整数,可能会不小心用它输出单精度变量和字符串。用错了数据类型,而编译也能通过

C++兼容C语言,同时利用继承的机制创建出自己输入输出系统——输入输出(I/O)流库

在使用C++的输入输出系统时,会对数据类型进行严格的检查,不正确的就会进行编译报错。另外C++的输入输出系统是可扩展的,不仅可以用来输入输出标准类型的数据,也可以用于用户自定义数据类型。

二、C++的输入输出流

输入输出是数据传送的过程,数据如流水一样从一处流向另一处。流是信息从源到目的端的流动。

C++的输入输出流是指由若干字节组成的字节序列,这些字节中数据按顺序从一个对象传送到另一个对象。

在输入操作时,字节流从输入设备(键盘,磁盘)流向内存。

在输出操作时,字节流从内存流向输出设备(屏幕,打印机,磁盘)。

流中的内容可以是ASCII字符、二进制形式的数据、图形图像、数字音频视频或者其他形式的信息。

C++中的I/O流库中的类称为流类。用流类定义的对象称为流对象。

cout和cin并不是C++中提供的语句,他们是I/O流类的对象。

(一)   iostream类库中有关的类

C++提供了用于输入输出的iostream类库。在 iostream类库中包含许多用于输入输出的类。这些类。这些类的继承层次结构如下图:

ios是抽象基类,由它派生出istream 类和 ostream类。

istream类支持输人操作,ostream类支持输出操作。

iostream类是从istream类和ostream类通过多重继承而派生的类

iostream类支持输入输出操作。

为了实现对文件的操作,C++的iostream类库中派生定义了用于文件操作的类,

它们分别是如下几个类:
fstreambase类:这是一个公共基类,文件操作中不直接使用这个类。
ifstream类:派生自fstreambase类和istream类,负责对文件进行提取操作

ofstream类:派生自fstreambase类和ostream类,负责对文件进行插入操作

fstream类:派生自fstreambase类和iostream类,负责对文件进行提取和插入操作

strstreambase是字符串流类基类,它派生定义了用于字符串操作的类:istrstream,ostrstream 和strstream。



iostream类库中不同类的声明被放在不同的头文件中。用户在程序中用预处理命令“#include”包含有关的头文件就相当于在本程序中声明了所需要用到的类。

编程时常用的头文件如下。
iostream.h:包含了对输人输出流进行操作所需的基本信息

fstream.h:用于用户管理的文件的 I/O操作
strstream.h:用于字符串的I/O操作。
stdiostream.h:用于混合使用C和C+的I/O操作
iomanip.h:用于格式化 I/O操作。

(二) iostream.h头文件的流对象和重载运算符

在iostream.h头文件中定义的类有 ios、istream,ostream,iostream,istream_withassign,ostream _withassign,iostream_withassign等

在iostream.h头文件中不仅定义了有关的类,还定义了下4种流对象供用户使用。

(1)cin:是istream 的派生类 istream_withassign的对象,是从标准输人设备(键盘输入到内存的数据流,称为cin流或标准输入流。
(2)cout:是ostream的派生类 ostream_withassign的对象,是从内存输出到标准出设备(显示器)的数据流,称为cout流或标准输出流。
(3)cerr 和clog:作用相似,均为向输出设备(显示器)输出出错信息。它们的区别是cerr提供不带缓冲区的输出,clog提供带缓冲区的输出。

从键盘输人时用cin流,

向显示器输出时用cout流

向显示器输出出错信息时用 cerr 或 clog 流。

本来“<<”和“>>”在C++中是被定义为左移位运算符和右移位运算符,在iostream.h头文件中对它们进行了重载,使它们能被用作标准类型数据的输入和输出运算符

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

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

相关文章

在做题中学习(62):矩阵区域和

1314. 矩阵区域和 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a;二维前缀和 思路&#xff1a;读题画图才能理解意思&#xff1a;dun点点的是mat中的一个数&#xff0c;而要求的answer同位置的数 以点为中心上下左右延长 k 个单位所围成长方形的和。 因为最后answ…

IPV4地址介绍

4.1IP地址简介 目前的全球因特网所采用的协议族是TCP/IP协议族。IP是TCP/IP协议族中网络层的协议&#xff0c;是TCP/IP协议族的核心协议。IP协议定义了一种地址编码&#xff0c;称为IP地址&#xff0c;它是网络中网络段、网络设备接口、主机的编码&#xff0c;它并不是一种物理…

Linux离线一键安装Docker及docker-compose环境

背景&#xff1a; 在当前软件部署运维环境中由于Docker容器化优势越来越明显&#xff0c;因些被许多公司运维所采用&#xff0c;那首先如何快速安装Docker及docker-compose基础环境就第一时间被人们关注&#xff0c;本人同样在经过多次手工逐条用命令安装的过程&#xff0c;整理…

基于51单片机的温湿度控制系统

一.硬件方案 本设计采用51单片机每2秒钟从DHT11温湿度传感器中读入温度和湿度&#xff0c;在液晶屏上即时显示。液晶屏上同时显示温湿度上限值&#xff0c;该上限值保存外外部EEPROM存储器中&#xff0c;掉电不失&#xff0c;并且可以通过四只按键上调或下调。当温度或湿度值超…

[猫头虎分享21天微信小程序基础入门教程]第21天:小程序的社交分享与消息推送

[猫头虎分享21天微信小程序基础入门教程]第21天&#xff1a;小程序的社交分享与消息推送 第21天&#xff1a;小程序的社交分享与消息推送 &#x1f4f2; 自我介绍 大家好&#xff0c;我是猫头虎&#xff0c;一名全栈软件工程师。今天我们继续微信小程序的学习&#xff0c;重…

MQ第②讲~保证消息可靠性

前言 上一讲我们讲了MQ实际工作中常见的应用场景&#xff0c;这一节讲一下消息的可靠性&#xff0c;如果对MQ掌握程度比较高的铁子&#xff0c;可以不用看&#xff0c;节省您宝贵的时间。 消息的大致链路 消息从投递到消费需要考虑如下几个问题 生产者的消息是否成功投递到消…

虚拟机改IP地址

使用场景&#xff1a;当你从另一台电脑复制一个VMware虚拟机过来&#xff0c;就是遇到一个问题&#xff0c;虚拟的IP地址不一样&#xff08;比如&#xff0c;一个是192.168.1.3&#xff0c;另一个是192.168.2.4&#xff0c;由于‘1’和‘2’不同&#xff0c;不是同一网段&#…

浅谈路由器转发数据包

当路由器转发数据包时&#xff0c;它会经历一系列步骤&#xff0c;包括接收数据包、路由表查询、以及转发数据包。以下是详细的步骤描述&#xff1a; 1. 接收数据包 以太网帧到达端口&#xff1a;当一个以太网帧到达路由器的某个网络接口&#xff08;端口&#xff09;时&#…

20240529瑞芯微官方Toybrick TB-RK3588开发板的Debian11下使用SCP拷贝文件

20240529瑞芯微官方Toybrick TB-RK3588开发板的Debian11下使用SCP拷贝文件 2024/5/29 20:48 1、ADB链接异常。 2、BT打开之后找不到设备&#xff1f; 不清楚&#xff1a;是我拿到的开发板的问题&#xff0c;还是Toybrick/Rockchip官方没有做好。 3、现在最新版本的WINSCP&…

154.找出出现至少三次的最长特殊字符串|(力扣)

代码解决 class Solution { public:int maximumLength(string s) {// 使用unordered_map来存储每个连续子串出现的次数unordered_map<string, int> mp;string key; // 存储当前的连续子串int ans -1; // 存储最终的答案&#xff0c;如果没有符合条件的子串&#xff0c…

高级数据结构-并查集

例题1&#xff1a; Alice和Bob玩了一个古老的游戏&#xff1a;首先画一个 &#x1d45b;&#x1d45b; 的点阵&#xff08;下图 n3 &#xff09;。 接着&#xff0c;他们两个轮流在相邻的点之间画上红边和蓝边&#xff1a; 直到围成一个封闭的圈&#xff08;面积不必为 1&#…

如何更改SSH服务器端口以减少蛮力攻击

本周有一个客户&#xff0c;购买Hostease的独立服务器&#xff0c;询问我们的在线客服&#xff0c;如何更改SSH服务器端口以减少蛮力攻击&#xff1f;我们为用户提供相关教程&#xff0c;用户很快解决了遇到的问题。在此&#xff0c;我们分享这个操作教程&#xff0c;希望可以对…

8086 汇编笔记(二):寄存器(内存访问)

一、内存中字的存储 字单元的概念&#xff1a;字单元&#xff0c;即存放一个字型数据(16 位)的内存单元&#xff0c;由两个地址连续的内存单元组成 由上一章学习可知&#xff1a;高地址内存单元中存放字型数据的高位字节&#xff0c;低地址内存单元中存放字型数据的低位字节 …

扎气球最高分-第13届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第74讲。 扎气球最高分&…

Spring框架温习

Spring Spring是一个全面的、企业应用开发一站式的解决方案&#xff0c;贯穿表现层、业务层、持久层。但是 Spring仍然可以和其他的框架无缝整合。 Spring 特点&#xff1a; 轻量级、控制反转、面向切面、容器、框架集合 Spring 核心组件&#xff1a; Spring 常用模块&…

【Redis】 关于 Redis 有序集合类型

文章目录 &#x1f343;前言&#x1f334;普通命令介绍&#x1f6a9;zadd&#x1f6a9;zcard&#x1f6a9;zcount&#x1f6a9;zrange&#x1f6a9;zrevrange&#x1f6a9;zrangebyscore&#x1f6a9;zpopmax&#x1f6a9;zpopmin&#x1f6a9;zrank&#x1f6a9;zrevrank&…

Shell脚本的分支语句,循环语句

分支语句 if 表达式 then 命令表 fi 如果表达式为真&#xff0c;则执行命令表中的命令&#xff0c;否则退出。执行fi后的语句。 给文件权限:chmod 0777 文件名 输出: ./文件名 grep 查找用户名&#xff0c;管道wc -l 统计字符 2.多路分支语句 记得给文件名权限喔&#x…

OSPF扩展知识2

FA-转发地址 正常 OSPF 区域收到的 5 类 LSA 不存在 FA 值&#xff1b; 产生 FA 的条件: 1、5类LSA ----假设 R2为 ASBR&#xff0c;90/0 口工作的 OSPF 中&#xff0c;g0/1 口工作在非 ospf 协议或不同 ospf 进程中&#xff1b;若 g0/1 也同时宣告在和 g0/0 相同的 OSPF 进程…

R语言入门 | 使用 ggplot2 进行数据可视化

1.0准备工作 先下好tidyverse包&#xff0c;并进行加载。 install.packages ( "tidyverse" ) library(tidyverse) R 包只需安装一次&#xff0c;但每次开始新会话时都要重新加载。 1.1 数据框 数据框是变量&#xff08;列&#xff09;和观测&#xff08;行&#x…

算法练习——字符串

一确定字符串是否包含唯一字符 1.1涉及知识点 c的输入输出语法 cin>>s; cout<<"NO"; 如何定义字符串 切记&#xff1a;在[]中必须加数字——字符串最大长度&#xff0c;不然编译不通过 char s[101]; 如何获取字符串长度 char s[101];cin>>s;i…