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

发布时间:2024年01月11日

?

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

一起加油!

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

文章来源:https://blog.csdn.net/2301_80585598/article/details/135538351
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。