欢迎来到天天文库
浏览记录
ID:38493203
大小:653.55 KB
页数:14页
时间:2019-06-13
《面向对象程序设计语言C+-第8章流库》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、面向对象程序设计语言C++电子科技大学示范性软件学院1第八章流库8.1C++的I/O系统C++为了与C兼容,仍然保留了printf和scanf进行输入输出的方法。在C++的输入输出中,编译系统对数据类型进行严格的检查,凡是类型不正确的数据都不可能通过编译,因此C++的I/O操作是类型安全的。但printf和scanf有一个重大的缺陷:就是它们不能处理用户自定义类型。所以,C++引入了自己的输入输出方式:流。C++采用继承的方法建立了比较实用的流库,流库不仅提供了与C的I/O系统相似的功能,而且功能更强
2、灵活性更大,能方便进行扩充。2第八章流库8.2C++流库的结构8.2.1输入输出流的含义输入是数据从输入设备(如键盘,磁盘,鼠标等)到内存的过程,输出是内存的数据输出到输出设备(如显示屏幕,打印机,磁盘等)的过程。输入输出过程中,数据像流水一样从一处流到另外一处,C++形象的描述该过程为流。流的内容可以是ASCII码字符、二进制形式的数据、图形图像、数字音频视频或者其他形式的信息。在C++中,输入输出流被定义为类。C++的I/O库中的类称为流类,用流类定义的对象称为流对象。比如cin是输入流对象,co
3、ut是输出流对象。3第八章流库8.2C++流库的结构8.2.2C++流库的结构4iosistreamostreamistrstreamifstreamostrstreamofstreamiostreamistream_withassignostream_withassignfstreamstdiostreamstrstreamstreambuffstreamstdiostreamstrstreamiostream_init第八章流库8.3输入和输出istream流类将运算符“>>”重载为输入运算符,它
4、相对于系统预定义类型(如int,char,float,double等类型)重载。ostream流类将运算符“<<”重载为输出运算符,它也对系统预定义类型重载。对于预定义类型,用户可以方便地使用运算符“>>”和“<<”进行输入和输出。对于类类型,用户可以重载运算符“>>”和“<<”以满足自己的需要。5第八章流库8.4格式控制在很多情况下,对计算机的输入输出格式进行控制是非常有用的,C++提供了比较灵活的方式控制输入输出的格式。在C++中,可以用C中的printf和scanf语句进行格式化I/O,这是C程
5、序员比较熟悉的方法。除此以外,C++还提供了两种进行格式控制的方法,一种是使用ios类有关格式控制的成员函数,另外一种是使用称为操纵符(manipulator)的特殊类型的函数,下面介绍这两种格式控制的方法。6第八章流库8.4格式控制8.4.1用ios类成员函数格式化7状态标志含义输入/输出kipws跳过输入中的空白Inputleft左对齐输出Outputright右对齐输出Outputinternal在符号位和基指示符后填入字符Outputdec转换基制为十进制Input/Outputoct转换基制
6、为八进制Input/Outputhex转换基制为十六进制Input/Outputshowbase在输出中显示基指示符Input/Outputshowpoint输出时显示小数点Outputuppercase十六进制输出时,表示制式的和表示数值的字符一律为大写Outputshowpos对正整数显示Outputscientific科学表示法显示浮点数Outputfixed定点形式显示浮点数Outputunitbuf在输出操作后立即刷新所有流Outputstdio在输出操作后刷新stdout和stderrOu
7、tput第八章流库8.4格式控制8.4.2用操纵函数格式化改变格式变量比较简单的方法是使用特殊的,但类似于函数的运算符,C++称之为操纵符。操纵符以一个流引用作为其参数,并返回同一流的引用,因此,它可嵌入到输入或输出操作的链中。例如,操纵函数setw(intw)是将域宽设置为w。8第八章流库8.4格式控制8.4.2用操纵函数格式化下表示C++与定义的操纵符:9操纵符含义输入/输出dec设置十进制转换基格式标志I/Ohex设置十六进制转换基格式标志I/Ooct设置八进制转换基格式标志I/Ows提取空白字
8、符Iendl插入换行并刷新流Oends在串后插入终止空字符Oflush刷新流Osetbase(intn)置转换基格式为基n(0,8,10或16)0表示使用缺省基数Oresetioflags(longf)清除由参数指定的ins或outs的格式位I/Osetioflags(longf)设置由参数指定的ins或outs的格式位I/Osetfill(intc)设置填充字符为cI/Osetprecision(intn)设置浮点精度为n位数字I/Osetw(intn
此文档下载收益归作者所有