面向对象程序设计C++第9章-课件

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

c++程序设计简明教程第九章C++的输入/输出流9.1概述9.2输出流9.3输入流9.4格式控制9.5文件的输入输出9.6小结c++程序设计简明教程9.1概述C++用流(stream)的概念描述数据的输入输出,流是计算机中的数据从源头移动到目的地的这种过程的抽象。流具有很强的方向性,与输入设备相联系的流称为输入流,与输出设备相联系的流称为输出流,与输入输出设备相联系的流称为输入输出流。c++程序设计简明教程流操作对流的基本操作有两种,从流中获得数据称为提取操作,向流中添加数据称为插入操作。C++语言用流对象来管理流,流对象一般都与某种设备相联系,程序员通过操纵流对象,达到控制输入输出的目的。c++程序设计简明教程输入输出流类输入输出流类负责把计算机的各种输入输出设备,变成流的源头和目的地,能被源源不断地提取和插入数据。streambuf类和ios类分别是两个类族的顶层基类,其它流类都是由这两个类中的一个派生而来。c++程序设计简明教程标准流对象便于程序员在程序中实现常用的输入输出功能,C++定义了4个标准的流对象,分别是cin、cout、cerr和clog。cin对象负责标准输入,即从键盘输入数据;cout对象负责标准输出,即向显示器输出数据。cerr对象和clog对象负责标准错误输出,其中cerr对象无缓冲区而clog对象则有。用于流提取的运算符是,用于流插入的运算符是,它们均从移位运算符重载而来。c++程序设计简明教程9.2输出流ostream类提供了数据流输出的功能,其流对象是流的目的地。在程序里可以将数据不断地插入流中,送至这些ostream流对象。输出时使用的ostream流对象通常是cout,有3种基本操作方式。第1种是用流插入运算符,输出基本类型的数据;第2种是用成员函数put,输出一个字符;第3种是用成员函数write,输出一个字符串。c++程序设计简明教程9.2.1流插入运算符一般形式cout表达式1……表达式n;例如:ntx=1,y=2;floatz=3.4;charc=’a’;coutx”,”y”,”z”,”cendl;coutx+y(xy)endl;c++程序设计简明教程9.2.2put函数原型ostream&put(charc);例如:charc=’a’;cout.put(c);//输出c的值即字母acout.put(c).put(‘b’).put(‘Q’);c++程序设计简明教程9.2.3write函数原型ostream&write(constchar*s,intn);例如:char*p=”C++”,a[20]=”language”;cout.write(p,3);cout.write(a,strlen(a));//输出数组a中的字符串coutendl;cout.write(p.strlen(p)).write(a,strlen(a));coutendl;c++程序设计简明教程9.3输入流istream类提供了数据流输入的功能,在程序里可以不断地从流对象中提取数据,存入相应的变量中。输入时使用的istream流对象通常是cin,有4种基本操作方式。第1种是用流提取运算符,读入基本类型的数据;第2种是用成员函数get,读入一个字符或者字符串;第3种是用成员函数getline,读入一个字符串;第4种是用成员函数read,读入一串指定数量的字符。c++程序设计简明教程9.3.1流提取运算符一般形式cin变量1变量2……变量n;说明:使用流提取运算符输入多个数据时,应该用空格符或者回车符进行分隔。默认情况下,系统会自动跳过输入流中的空格符、tab符以及回车符等空白字符c++程序设计简明教程9.3.2get函数原型intget(void);istream&get(char&c);istream&get(char*s,intn,charch=’\n’);例如:charc1,c2,a[80];c1=cin.get();cin.get(c2);cin.get(a,21,’#’);c++程序设计简明教程9.3.3getline函数原型istream&getline(char*s,intn,charch=’\n’);例如:chara[80];cin.getline(a,21,’#’)c++程序设计简明教程函数原型说明intgcount(void)const统计最近一次实际读取的字符个数istream&ignore(intn=1,intd=EOF)跳过并丢弃n个字符,直到遇见d中的字符为止istream&putback(charch)将指定字符插入到输入流的当前位置intpeek(void)读取输入流中当前字符Istream类的读取控制成员函数c++程序设计简明教程9.3.4read函数原型istream&read(char*s,intn);说明:read函数的功能是从输入流中顺序读取n个字符,并存入到s所指向的字符数组中。它与get函数、getline函数的区别是,不在读取的这些字符的尾部添加一个空字符(’\0’)。c++程序设计简明教程9.4格式控制在实践应用中经常需要对输入输出的格式进行控制,例如设置域宽和精度、设置或者清除格式状态标志、设置填充字符、设置数据对齐方式,以及在输出流中插入空字符或者换行符等等。C++提供了两种用于格式控制的方法,一种是调用ios类的格式控制成员函数,另一种是使用流操纵符。c++程序设计简明教程函数原型说明intwidth(void)读取当前设置的域宽intwidth(intn)设置当前域宽为n,并返回原先设置的域宽intprecision(void)读取当前设置的浮点数精度intprecision(intn)设置当前浮点数的精度为n,并返回原先设置的浮点数精度charfill(void)读取当前设置的填充字符charfill(charch)设置当前填充字符为ch,并返回原先设置的填充字符longflags(void)读取当前设置的格式状态标志longflags(longf)设置当前格式状态标志为f,并返回原先设置的格式状态标志longsetf(longf)设置当前格式状态标志为f,并返回原先设置的格式状态标志longunsetf(longf)清除格式状态标志f,并返回原先设置的格式状态标志格式控制成员函数c++程序设计简明教程案例intmain(){inti;for(i=1;i=4;i++){cout.width(4-i);cout.fill('');if(cout.width()!=0)cout;cout.width(2*i-1);cout.fill('*');cout*endl;}return(0);}c++程序设计简明教程格式状态标志ios::adjustfield标志组ios::left输出时左对齐ios::right输出时右对齐ios::internal符号和基数标志左对齐,数值右对齐,中间用字符填充c++程序设计简明教程ios::basefield标志组ios::dec以十进制为基数输出ios::oct以八进制为基数输出ios::hex以十六进制为基数输出c++程序设计简明教程ios::floatfield标志组ios::fixed以定点形式输出浮点数ios::scientific以指数形式输出浮点数c++程序设计简明教程其他标志ios::skipws输入时跳过空白符ios::showbase输出时带有基数标志,八进制数有前导0,十六进制数有前导0xios::showpoint输出浮点数时带有小数点ios::showpos输出十进制正数时有前导+ios::uppercase将十六进制数和以指数形式表示的数中的字母转换为大写形式ios::boolalpha以文本的形式输出布尔数据(true、false)c++程序设计简明教程成员函数flags在调用flags函数时,一般还用赋值语句保存函数的返回值,在适当的时机再次调用flags函数,恢复原先的格式状态。longoldf;oldf=cout.flags(ios::left|ios::hex);/*设置输出左对齐和以十六进制为基数的标志*/……cout.flags(oldf);//恢复原先的状态设置c++程序设计简明教程selft函数setf函数和unsetf函数通常配合使用,用来完成格式状态标志的设置和清除。cout.setf(ios::left);//设置输出左对齐标志……cout.unsetf(ios::left);//清除左对齐标志c++程序设计简明教程操作符操纵符(manipulator)又称为流操作算子,是一种特殊的函数。由于操纵符返回流对象的引用,因此可以连续地使用,并直接插入到流中,较为方便地控制流中数据的输入输出格式。c++程序设计简明教程例9.5操作符应用之一。#includeiostream.h#includeiomanip.hintmain(){inti;for(i=1;i=4;i++){coutsetw(4-i)setfill('');if(cout.width()!=0)cout;coutsetw(2*i-1)setfill('*')*endl;}return(0);}c++程序设计简明教程自定义操作符ostream&pxy(ostream&out){out.flags(ios::left);outsetw(3);return(out);}coutx=pxyp.xy=pxyp.y;c++程序设计简明教程9.5文件的输入输出C++提供文件流类来处理文件的输入输出,分别是ifstream类、ofstream类和fstream类。文件流对象控制输入输出的方式,与cin对象和cout对象非常相似,而且已经学过的输入输出成员函数、格式控制成员函数以及操纵符,基本上都可以适用于文件流对象。c++程序设计简明教程9.5.1文件打开与关闭对文件能够进行哪些操作,这主要取决于两个因素。第一个因素是文件所关联的文件流对象,ofstream流对象能够进行文件输出操作(即写操作),ifstream流对象能够进行文件输入操作(即读操作),fstream流对象既能够进行文件输出操作,也能够进行文件输入操作。c++程序设计简明教程打开方式说明ios::in以读方式打开文件ios::out以写方式打开文件ios::app在文件尾部追加写入ios::ate打开一个已存在的文件,并将位置指针置于该文件的结尾ios::nocreate打开一个已存在的文件,若该文件不存在,则打开失败ios::noreplace打开文件时若该文件已存在,而且未设置app或者ate,则打开失败ios::binary以二进制方式打开文件ios::trunc打开文件时若已存在,清空原有内容;若文件不存在,则创建新文件C++文件的打开方式c++程序设计简明教程文件打开(1)C++文件打开的方法有两种,第一种是在创建文件流对象的同时,立即打开相关联的文件。具体实现过程就是向文件流对象的构造函数,传送文件名和打开方式等参数。istreamfile1(“a.txt”,ios::in);ostreamfile2(“b.txt”,ios::out|ios::binary);c++程序设计简明教程文件打开(2)第二种方法是先创建文件流对象,再调用成员函数open,并传给它文件名和打开方式等参数,打开相关联的文件。istreamfile1;file1.open(“a.txt”,ios::in);ostreamfile2;file2.open(“b.txt”,ios::out|ios::binary);c++程序设计简明教程文件打开测试istreamfile1;file1.open(“a.txt”,ios::in);if(!

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功