收藏 分享(赏)

第9章 C++输入输出流.ppt

上传人:kpmy5893 文档编号:9172905 上传时间:2019-07-26 格式:PPT 页数:37 大小:154KB
下载 相关 举报
第9章 C++输入输出流.ppt_第1页
第1页 / 共37页
第9章 C++输入输出流.ppt_第2页
第2页 / 共37页
第9章 C++输入输出流.ppt_第3页
第3页 / 共37页
第9章 C++输入输出流.ppt_第4页
第4页 / 共37页
第9章 C++输入输出流.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、第9章 C+的输入/输出流,9.1 概述9.2 输出流9.3 输入流9.4 格式控制9.5 文件的输入输出,9.1 概述,C+用流(stream)的概念描述数据的输入输出,流是计算机中的数据从源头移动到目的地的这种过程的抽象。 流具有很强的方向性,与输入设备相联系的流称为输入流,与输出设备相联系的流称为输出流,与输入输出设备相联系的流称为输入输出流。,流操作,对流的基本操作有两种,从流中获得数据称为提取操作,向流中添加数据称为插入操作。C+语言用流对象来管理流,流对象一般都与某种设备相联系,程序员通过操纵流对象,达到控制输入输出的目的。,输入输出流类,输入输出流类负责把计算机的各种输入输出设备

2、,变成流的源头和目的地,能被源源不断地提取和插入数据。 streambuf类和ios类分别是两个类族的顶层基类,其它流类都是由这两个类中的一个派生而来。,标准流对象,为便于程序员在程序中实现常用的输入输出功能,C+定义了4个标准的流对象,分别是cin、cout、cerr和clog。cin对象负责标准输入,即从键盘输入数据;cout对象负责标准输出,即向显示器输出数据。cerr对象和clog对象负责标准错误输出,其中cerr对象无缓冲区而clog对象则有。 用于流提取的运算符是,用于流插入的运算符是,它们均从移位运算符重载而来。,9.2 输出流,ostream类提供了数据流输出的功能,其流对象是

3、流的目的地。在程序里可以将数据不断地插入流中,送至这些ostream流对象。 输出时使用的ostream流对象通常是cout,有3种基本操作方式。第1种是用流插入运算符,输出基本类型的数据;第2种是用成员函数put,输出一个字符;第3种是用成员函数write,输出一个字符串。,流插入运算符,couty)endl;,成员函数put,ostream,成员函数write,ostream,9.3 输入流,istream类提供了数据流输入的功能,在程序里可以不断地从流对象中提取数据,存入相应的变量中。 输入时使用的istream流对象通常是cin,有4种基本操作方式。第1种是用流提取运算符,读入基本类型

4、的数据;第2种是用成员函数get,读入一个字符或者字符串;第3种是用成员函数getline,读入一个字符串;第4种是用成员函数read,读入一串指定数量的字符。,流提取运算符,cin变量1变量2变量n; 使用流提取运算符输入多个数据时,应该用空格符或者回车符进行分隔。默认情况下,系统会自动跳过输入流中的空格符、tab符以及回车符等空白字符。,成员函数get,int get(void); istream,成员函数getline,istream,读取控制成员函数,成员函数read,istreamread函数的功能是从输入流中顺序读取n个字符,并存入到s所指向的字符数组中。它与get函数、getli

5、ne函数的区别是,不在读取的这些字符的尾部添加一个空字符(0)。,9.4 格式控制,在实践应用中经常需要对输入输出的格式进行控制,例如设置域宽和精度、设置或者清除格式状态标志、设置填充字符、设置数据对齐方式,以及在输出流中插入空字符或者换行符等等。C+提供了两种用于格式控制的方法,一种是调用ios类的格式控制成员函数,另一种是使用流操纵符。,格式控制成员函数,案例,#includeint main()int i;for(i=1;i=4;i+)cout.width(4-i); cout.fill( );if(cout.width()!=0)cout“ “;cout.width(2*i-1); c

6、out.fill(*);cout“*“endl;return(0); ,格式状态标志,ios:adjustfield标志组 ios:left 输出时左对齐ios:right 输出时右对齐ios:internal 符号和基数标志左对齐,数值右对齐,中间用字符填充,ios:basefield标志组,ios:dec 以十进制为基数输出 ios:oct 以八进制为基数输出 ios:hex 以十六进制为基数输出,ios:floatfield标志组,ios:fixed 以定点形式输出浮点数 ios:scientific 以指数形式输出浮点数,其它标志,ios:skipws 输入时跳过空白符 ios:sho

7、wbase 输出时带有基数标志,八进制数有前导0,十六进制数有前导0x ios:showpoint 输出浮点数时带有小数点 ios:showpos 输出十进制正数时有前导+ ios:uppercase 将十六进制数和以指数形式表示的数中的字母转换为大写形式 ios:boolalpha 以文本的形式输出布尔数据(true、false),成员函数flags,long oldf;oldf=cout.flags(ios:left|ios:hex);/*设置输出左对齐和以十六进制为基数的标志*/cout.flags(oldf);/恢复原先的状态设置,setf函数,setf函数和unsetf函数通常配合使

8、用,用来完成格式状态标志的设置和清除。 cout.setf(ios:left);/设置输出左对齐标志cout.unsetf(ios:left);/清除左对齐标志,操纵符,操纵符(manipulator)又称为流操作算子,是一种特殊的函数。由于操纵符返回流对象的引用,因此可以连续地使用,并直接插入到流中,较为方便地控制流中数据的输入输出格式。,案例,#include#includeint main()int i;for(i=1;i=4;i+)coutsetw(4-i)setfill( );if(cout.width()!=0)cout“ “;coutsetw(2*i-1)setfill(*)“*

9、“endl;return(0); ,自定义操纵符,ostream,9.5 文件的输入输出,C+提供文件流类来处理文件的输入输出,分别是ifstream类、ofstream类和fstream类。 文件流对象控制输入输出的方式,与cin对象和cout对象非常相似,而且已经学过的输入输出成员函数、格式控制成员函数以及操纵符,基本上都可以适用于文件流对象。,文件打开与关闭,对文件能够进行哪些操作,这主要取决于两个因素。第一个因素是文件所关联的文件流对象,ofstream流对象能够进行文件输出操作(即写操作),ifstream流对象能够进行文件输入操作(即读操作),fstream流对象既能够进行文件输出

10、操作,也能够进行文件输入操作。,打开方式,文件打开1,C+文件打开的方法有两种,第一种是在创建文件流对象的同时,立即打开相关联的文件。具体实现过程就是向文件流对象的构造函数,传送文件名和打开方式等参数。istream file1(“a.txt”,ios:in); ostream file2(“b.txt”,ios:out|ios:binary);,文件打开2,第二种方法是先创建文件流对象,再调用成员函数open,并传给它文件名和打开方式等参数,打开相关联的文件。 istream file1; file1.open(“a.txt”,ios:in); ostream file2; file2.op

11、en(“b.txt”,ios:out|ios:binary);,文件打开测试,istream file1;file1.open(“a.txt”,ios:in);if(!file1)cerr”文件打开失败!”endl;,文件的顺序读写,所谓顺序读写,就是文件打开之后从头开始,顺序地读写文件中的数据。 以文件流对象的形式来处理文件的输入输出是非常便利的,文件流对象与文件建立关联之后,就可以象cin和cout那样控制数据流,前面介绍的几种输入输出方法都可以用来实现文件的读写操作。,文件的定位和状态检测,成员函数tellg和tellp用于得到文件位置指针的当前位置,其函数原型为:long tellg(void);long tellp(void);,重新定位,成员函数seekg用于重新定位输入流文件位置指针的当前位置,其函数原型为: istream,文件流输入输出状态标志,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报