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

目录

一、C++的输入输出

[(一) C++的输入输出](#(一) C++的输入输出)

[(二)C语言的scanf和printf](#(二)C语言的scanf和printf)

二、C++的输入输出流

[(一) iostream类库中有关的类](#(一) iostream类库中有关的类)

[(二) iostream.h头文件的流对象和重载运算符](#(二) 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是抽象基类,由它派生出i stream 类和 ostream类。

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

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

iostream类支持输入输出操作。

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

它们分别是如下几个类:

fstreambase类:这是一个公共基类,文件操作中不直接使用这个类。
ifstream类:派生自fstreambase类和i stream类,负责对文件进行提取操作

ofstream类:派生自f streambase类和o stream类,负责对文件进行插入操作

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

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

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

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

fstream.h:用于用户管理的文件的 I/O操作
str stream.h:用于字符串的I/O 操作。
stdio stream.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头文件中对它们进行了重载,使它们能被用作标准类型数据的输入和输出运算符

相关推荐
九圣残炎12 分钟前
【从零开始的LeetCode-算法】1456. 定长子串中元音的最大数目
java·算法·leetcode
童先生17 分钟前
Go 项目中实现类似 Java Shiro 的权限控制中间件?
开发语言·go
lulu_gh_yu18 分钟前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法
丫头,冲鸭!!!37 分钟前
B树(B-Tree)和B+树(B+ Tree)
笔记·算法
Re.不晚42 分钟前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea
老秦包你会44 分钟前
Qt第三课 ----------容器类控件
开发语言·qt
凤枭香1 小时前
Python OpenCV 傅里叶变换
开发语言·图像处理·python·opencv
ULTRA??1 小时前
C加加中的结构化绑定(解包,折叠展开)
开发语言·c++
远望清一色1 小时前
基于MATLAB的实现垃圾分类Matlab源码
开发语言·matlab
confiself1 小时前
大模型系列——LLAMA-O1 复刻代码解读
java·开发语言