当前位置:首页 > > 充电吧
[导读]今天在写一个文件读写操作得时候,发现知识体现严重混乱,没办法忙写,都是借助百度才搞定的。为此下午决定好好的总结一下c++标准io库的相关知识,用自己平时将ppt的思路来写整理这个文档。1.标准IO库是

今天在写一个文件读写操作得时候,发现知识体现严重混乱,没办法忙写,都是借助百度才搞定的。为此下午决定好好的总结一下c++标准io库的相关知识,用自己平时将ppt的思路来写整理这个文档。

1.标准IO库是什么东西?

C++的输入输出库由标准库(标准库是什么东西就不解释了)提供。标准库定义了一族类型,支持对文件和控制窗口(如我们通常看到的屏幕输出,或者黑窗口吧)等设备的读写。还定义了其他一些类型,使string对象能够像文件一样操作,从而使我们无须IO就能实现数据与字符之间的转换(待会会介绍)。这些IO类型都定义了如何读写内置数据类型的值,相信有不少人会对内置数据类型有些混乱,贴出c++的内置数据类型如下,也就是说标准IO库可以读写以下类型的值,是不是很酷啊,一般来说也可以读写自定义类的对象,那要看自己自定义类是怎么设计的了,反正不管是什么类也都是一大堆的内置类型搭起来的。



类型

大小(字节)

bool

1

true 或者false

unsigned short int

2

0~65535

short int

2

-32768~32767

unsigned long int

4

0~4294967395

long int

4

-2147483648~2147483647

int

4

-2147483648~2147483647

unsigned int

4

0~4294967395

char

1

256 个字符

wchar_t

2

256 个字

float

4

10-37~1038

double

8

10-307~10308

long double

16

10-4931~104932


继续...



2.在这里先总结一下我们能拿io标准库做什么事情?


与用户控制窗口交互(控制窗口)读写已命名的文件  (磁盘文件)使用io操作格式化内存中的数据(内存) 不管我们是从控制窗口、磁盘文件或内存中的字符串读入数据,都可以使用>>操作符。 不管我们读的是char类型的字符还是wchar_t的字符,也都可以使用该操作符。
3.开始进入正题,标准IO库的继承关系 平时在使用io库的时候,就是因为没有了解他们的继承关系和使用场合导致无法系统的记忆,现在我们先看下一共有多少种常用的类 io类型在三个独立的头文件定义,分别完成2中要做的三个事情(控制窗口、磁盘文件、内存) iostream:定义读写控制窗口的类型fstream:定义读写已命名文件的类型。sstream:读写内存中string对象注意:在fstream和sstream里定义的每种类型都是从iostream头文件中定义的相关类型派生出来,先来看一个图大概了解一下标准io库的成员 iostream istream 从流中读取 
ostream 写到流中去 
iostream 对流进行读写;从 istream 和 ostream 派生而来 fstream ifstream 从文件中读取;由 istream 派生而来 
ofstream 写到文件中去;由 ostream 派生而来 
fstream 读写文件;由 iostream 派生而来 sstream istringstream 从 string 对象中读取;由 istream 派生而来 
ostringstream 写到 string 对象中去;由 ostream 派生而来 
stringstream 对 string 对象进行读写;由 iostream 派生而来 粗略的用工具画一下继承关系
结合表格和图来进行记忆,争取以后写代码的时候不要在百度了。
io库使用继承有一个主要的用处在于,如果函数有基类类型的引用形参时,可以给函数传递其派生类型的对象。如对istream&进行操作的对象,可以使用ifstream或者istringstream对象来调用。类似的ostream同上

4.国际字符的支持 在读写wchar_t时,所有类前面加上w,如 wostream、wistream、wiostream控制窗口读写 wofstream、wifstream、wfstream控制文件读写 wostringstream、wistringstream、wstringstream控制内存读写 每一个 IO 头文件都定义了 char 和 wchar_t 类型的类和标准输入/输出对象。基于流的 wchar_t 类型的类和对象在 iostream 中定义,宽字符文件流类型在 fstream 中定义,而宽字符 stringstream 则在 sstream 头文件中定义。


5.IO对象不可复制 io对象的不可复制,产生了几个问题 由于流对象不能复制,因此不能存储在 vector(或其他)容器中(即不存在存储流对象的 vector 或其他容器)。形参或返回类型也不能为流类型。如果需要传递或返回 IO对象,则必须传递或返回指向该对象的指针或引用:
6.条件状态 通常我们在使用io库的时候会出现各种异常,通过以下函数可以获取条件状态

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭