C++课件c++13章节

上传人:E**** 文档编号:90579136 上传时间:2019-06-13 格式:PPT 页数:72 大小:886KB
返回 下载 相关 举报
C++课件c++13章节_第1页
第1页 / 共72页
C++课件c++13章节_第2页
第2页 / 共72页
C++课件c++13章节_第3页
第3页 / 共72页
C++课件c++13章节_第4页
第4页 / 共72页
C++课件c++13章节_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《C++课件c++13章节》由会员分享,可在线阅读,更多相关《C++课件c++13章节(72页珍藏版)》请在金锄头文库上搜索。

1、第十三章 输入输出流,C+语言程序设计,计算机基础教学研究室,主要内容,13.1 C+的输入和输出 13.2 标准输出流 13.3 标准输入流 13.4 文件操作与文件流 13.5 字符串流,以前所用到的输入和输出,都是以终端为对象的,即从键盘输入数据,运行结果输出到显示器屏幕上。 除了以终端为对象进行输入和输出外,还经常用磁盘(光盘)作为输入输出对象,磁盘文件既可以作为输入文件,也可以作为输出文件。 程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件。,13.1 C+的输入和输出 13.1.1 输入输出的含义,C+的输入与输出包括以下3方面的内容: (1)

2、 对系统指定的标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。 (2) 以外存磁盘文件为对象进行输入和输出,即从磁盘文件输入数据,数据输出到磁盘文件。以外存文件为对象的输入输出称为文件的输入输出,简称文件I/O。 (3) 对内存中指定的空间进行输入和输出。通常指定一个字符数组作为存储空间(实际上可以利用该空间存储任何信息)。这种输入和输出称为字符串输入输出,简称串I/O。 C+采取不同的方法来实现以上3种输入输出。 为了实现数据的有效流动,C+系统提供了庞大的I/O类库,调用不同的类去实现不同的功能。,在C+的输入输出中,编译系统对数据

3、类型进行严格的检查,凡是类型不正确的数据都不可能通过编译。因此C+的I/O操作是类型安全(type safe)的。 C+的I/O操作是可扩展的,不仅可以用来输入输出标准类型的数据,也可以用于用户自定义类型的数据。C+对标准类型的数据和对用户声明类型数据的输入输出,采用同样的方法处理。 C+通过I/O类库来实现丰富的I/O功能。C+的输入输出优于C语言中的printf和scanf,但是比较复杂,要掌握许多细节。,13.1.2 C+的I/O对C的发展 类型安全和可扩展性,C+的输入输出流是指由若干字节组成的字节序列,这些字节中的数据按顺序从一个对象传送到另一对象。流表示了信息从源到目的端的流动。

4、在输入操作时,字节流从输入设备(如键盘、磁盘)流向内存,在输出操作时,字节流从内存流向输出设备(如屏幕、打印机、磁盘等)。 流中的内容可以是ASCII字符、二进制形式的数据、图形图像、数字音频视频或其他形式的信息。 在内存中为每一个数据流开辟一个内存缓冲区,用来存放流中的数据。流是与内存缓冲区相对应的,或者说,缓冲区中的数据就是流。,13.1.3 C+的输入输出流,I/O流的结构,流类库,i/ostream,istream,ostream,ios,ios类提供关于对流状态进行设置的功能,它是一个基类,istream类提供向流中插入数据的有关操作,ostream类提供从流中提取数据的有关操作,s

5、treambuf,streambuf类是为ios类及其派生类提供对数据的缓冲支持,上面类派生定义了几个描述文件抽象的类: ifstream类:从istream类派生的,功能是对文件进行输入操作 ofstream类:从ostream类派生的,功能是对文件进行输出操作 fstream类:对文件进行插入和提取操作 filebuf类:从streambuf类派生的,作为上述类的缓冲支持,图13.2 I/O类库中还有其他类,见图13.3。,图13.3,C+编译系统提供了用于输入输出的iostream类库。在iostream类库中包含许多用于输入输出的类。 ios是抽象基类,由它派生出istream类和os

6、tream类。istream类支持输入操作,ostream类支持输出操作。 iostream类是从istream类和ostream类通过多重继承而派生的类。它支持输入输出双向操作,其继承层次见图13.1表示。,1. iostream类库中有关的类,头文件是程序与类库的接口,iostream类库的接口分别由不同的头文件来实现。常用的有 iostream包含了对输入输出流进行操作所需的基本信息。 fstream用于用户管理的文件的I/O操作。 strstream用于字符串流I/O。 stdiostream用于混合使用C和C+的I/O机制时。 iomanip在使用格式化I/O时应包含此头文件。,2.

7、 常见与iostream类库有关的头文件,3.系统定义的I/O流类对象,“”本来在C+中是被定义为左位移运算符和右位移运算符的,由于在iostream头文件中对它们进行了重载,使它们能用作标准类型数据的输入和输出运算符。 在用它们的程序中必须用#include 输出操作由重载的插入符“”实现 系统预定好了4个流类对象,供用户使用: cin:它是istream类的对象,用来处理标准输入,即键盘输入 cout:它是ostream类的对象,用来处理标准输出,即屏幕输出 cerr:它是ostream类的对象,用来处理标准出错信息,不带缓冲区的输出,即发给它的内容立即输出 clog:它是ostream类

8、的对象,用来处理标准出错信息,带缓冲区的输出,缓冲区满时被输出,如果在程序中有下面的表达式: cout”、“”运行符可以输入、输出各种类型的数据。,例13.1 有一元二次方程ax2+bx+c=0,其一般解为 x1,2=(-bb2-4ac)/2a,但若a=0,或b2-4ac #include using namespace std;,13.2 标准输出流 13.2.1 标准输入、输出流对象的使用,int main( ) float a,b,c,disc; coutabc; if (a=0) cerra is equal to zero,error!endl; /将有关出错信息插入cerr流,在屏

9、幕输出 else if (disc=b*b-4*a*c)0) cerrdisc=b*b-4*a*c0endl; /将有关出错信息插入cerr流,在屏幕输出 else coutx1=(-b+sqrt(disc)/(2*a)endl; coutx2=(-b-sqrt(disc)/(2*a)endl; return 0; ,运行情况如下: please input a,b,c: 0 2 3 a is equal to zero,error! please input a,b,c: 5 2 3 sc=b*b-4*a*c0 please input a,b,c: 1 2.5 1.5 x1=-1 x2=-

10、1.5,在输出数据时,有时希望数据按指定的格式输出。有两种方法可以达到此目的。一种是第3章已介绍过的使用控制符的方法;第2种是使用流对象的有关成员函数。 1. 使用控制符控制输出格式 输出数据的控制符见书中表13.3。 应当注意,这些控制符是在头文件iomanip中定义的,因而程序中应当包含iomanip。,13.2.2 格式输出,例13.2 用控制符控制输出格式。 #include #include /不要忘记包含此头文件 using namespace std; int main() int a; couta; coutdec:decaendl; /以十进制形式输出整数 couthex:h

11、exaendl; /以十六进制形式输出整数a coutoct:setbase(8)aendl; /以八进制形式输出整数a char *pt=China; /pt指向字符串China coutsetw(10)ptendl; /指定域宽为10,输出字符串 coutsetfill(*)setw(10)ptendl; /指定域宽10,输出字符串,空白 处以*填充 double pi=22.0/7.0; /计算pi值 coutsetiosflags(ios:scientific)setprecision(8);/按指数形式输出,8位小数 coutpi=piendl; /输出pi值 coutpi=setp

12、recision(4)piendl; /改为4位小数 coutpi=setiosflags(ios:fixed)piendl;/改为小数形式输出 return 0; ,运行结果如下: input a:34(输入a的值) dec:34 (十进制形式) hex:22 (十六进制形式) oct:42 (八进制形式) China (域宽为10) *China (域宽为10,空白处以*填充) pi=3.14285714e+00 (指数形式输出,8位小数) pi=3.1429e+00 (指数形式输出,4位小数) pi=3.143 (小数形式输出,精度仍为4),2. 用流对象的成员函数控制输出格式 除了可以

13、用控制符来控制输出格式外,还可以通过调用流对象cout中用于控制输出格式的成员函数来控制输出格式。用于控制输出格式的常用的成员函数见书中表13.4。 流成员函数setf和控制符setiosflags括号中的参数表示格式状态,它是通过格式标志来指定的。格式标志在类ios中被定义为枚举值。因此在引用这些格式标志时要在前面加上类名ios和域运算符“:”。格式标志见书中表13.5。,例13.3 用流控制成员函数输出数据。 #include using namespace std; int main( ) int a=21 cout.setf(ios:showbase);/显示基数符号(0x或0) co

14、utdec:aendl; /默认以十进制形式输出a cout.unsetf(ios:dec); /终止十进制的格式设置 cout.setf(ios:hex); /设置以十六进制输出的状态 couthex:aendl; /以十六进制形式输出a cout.unsetf(ios:hex); /终止十六进制的格式设置 cout.setf(ios:oct); /设置以八进制输出的状态 coutoct:aendl; /以八进制形式输出a cout.unseft(ios:oct); char *pt=China; /pt指向字符串China cout.width(10); /指定域宽为10 coutpten

15、dl; /输出字符串 cout.width(10); /指定域宽为10,cout.fill(*); /指定空白处以*填充 coutptendl; /输出字符串 double pi=22.0/7.0; /输出pi值 cout.setf(ios:scientific); /指定用科学记数法输出 coutpi=; /输出pi= cout.width(14); /指定域宽为14 coutpiendl; /输出pi值 cout.unsetf(ios:scientific); /终止科学记数法状态 cout.setf(ios:fixed); /指定用定点形式输出 cout.width(12); /指定域宽为12 cout.setf(ios:showpos); /正数输出“+”号 cout.setf(ios:internal); /数符出现在左侧 cout.precision(6); /保留6位小数 cou

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号