C程序设计--对象分册第4章.ppt

上传人:b****1 文档编号:1387927 上传时间:2022-10-21 格式:PPT 页数:54 大小:225KB
下载 相关 举报
C程序设计--对象分册第4章.ppt_第1页
第1页 / 共54页
C程序设计--对象分册第4章.ppt_第2页
第2页 / 共54页
C程序设计--对象分册第4章.ppt_第3页
第3页 / 共54页
C程序设计--对象分册第4章.ppt_第4页
第4页 / 共54页
C程序设计--对象分册第4章.ppt_第5页
第5页 / 共54页
点击查看更多>>
下载资源
资源描述

C程序设计--对象分册第4章.ppt

《C程序设计--对象分册第4章.ppt》由会员分享,可在线阅读,更多相关《C程序设计--对象分册第4章.ppt(54页珍藏版)》请在冰豆网上搜索。

C程序设计--对象分册第4章.ppt

2022/10/21,1,第4章输入输出流,本章学习重点掌握内容:

输入输出流类体系结构输入输出流的格式化输入输出流对象文本文件和二进制文件的输入和输出综合应用实例,2022/10/21,2,第4章输入输出流,4.1输入输出流基本概念4.2输入输出流类体系4.3I/O流操作4.4文件流和文件的输入输出4.5字符串流4.6重载插入和提取运算符,2022/10/21,3,4.1输入输出流基本概念,1、流流是一种抽象,它负责在数据的生产者(程序/文件)和数据的消费者(文件/程序)之间建立联系,并管理数据的流动。

2、字节流字节流分为字符流(也称文本流)和二进制流。

字符流在数据传输时需作转换,效率较低。

但可以直接编辑,显示或打印。

2022/10/21,4,4.1输入输出流基本概念,二进制流将字节流的每个字节以二进制方式解释,它在数据传输时不作任何转换,故效率高。

但无法人工阅读,可移植性较差。

3、文件文件是一般指存储在外部介质上数据的集合。

计算机中的程序、数据、文档通常都组织成文件存放在外存储器中。

2022/10/21,5,4.1输入输出流基本概念,4、缓冲系统在主存中开辟的、用来临时存放输入输出数据的区域,成为输入输出缓冲区(简称缓冲区)。

5、命名空间命名空间,就是在程序的不同的模块中使用相同的名字表示不同的事物(实体)。

目的是提供一种机制,使大程序的各个部分中因出现重名而导致冲突的可能性降到最低。

2022/10/21,6,4.2输入输出流类体系,C+为实现数据的输入和输出定义了一个庞大的流类库,它包括的类主要有ios,istream,ostream,iostream,ifstream,ofstream,fstream等。

类istream和ostream是类ios的公有派生类,分别提供输入和输出操作。

继承关系见下图。

2022/10/21,7,4.2.1流类库,2022/10/21,8,4.2.1流类库,C+I/O常用流类列表

(1),2022/10/21,9,4.2.1流类库,C+I/O常用流类列表

(2),2022/10/21,10,4.2.2标准流对象,C+语言在头文件iostream.h中预定义了4个标准流类的对象:

externistreamcin;/标准输入流对象externostreamcout;/标准输出流对象externostreamcerr;/标准错误流(非缓冲)对象externostreamclog;/标准错误流对象,2022/10/21,11,4.2.2标准流对象,cin是consoleinput缩写。

在默认的情况下,代表键盘。

cout是consoleoutput的缩写。

在默认的情况下,代表显示器。

cerr和clog是consoleerror和consolelog的缩写。

在默认的情况下,代表显示器。

这四个标准流中,cerr为非缓冲流,其余均为缓冲流。

输入就是从流中提取一个字节序列,C+用“”运算符表示提取,称为提取运算符。

输出就是向流中插入一个字节序列,用“”运算符表示插入,称为插入运算符。

这两个运算符分别定义在类ostream和istream中。

2022/10/21,12,4.2.2标准流对象,【例4.1】使用流cout和cerr实现数据的输出。

#includevoidmain(void)floata,b;cerrab;if(b!

=0)couta/b=a/bn;elsecerr”除数为零!

n”;,2022/10/21,13,4.3I/O流操作,I/O流的格式化。

iomanip.h中预定义的格式控制符,2022/10/21,14,4.3I/O流操作,控制输出格式的流成员函数,2022/10/21,15,4.3I/O流操作,设置格式状态的格式标志,2022/10/21,16,4.3I/O流操作,【例4.2】用格式控制符setw、hex、dec指定输出数据的域宽和数制。

#include#includevoidmain(void)inta=256,b=128;coutsetw(8)a”b=”bn;/Line1couthexa”b=”decbn;/Line2,2022/10/21,17,4.3I/O流操作,【例4.3】数据进制之间的转换。

#include/因iomanip.h中包含有iostream.h,所以该命令也可省略#includevoidmain()intx=30,y=300,z=1024;coutxyzendl;/按十进制输出coutoctxyzendl;/按八进制输出couthexxyzendl;/按十六进制输出,2022/10/21,18,4.3I/O流操作,coutsetiosflags(ios:

showbase|ios:

uppercase);/设置基指示符和数值中的字母大写输出coutxyzendl;/仍按十六进制输出coutresetiosflags(ios:

showbase|ios:

uppercase);/取消基指示符和数值中的字母大写输出coutxyzendl;/仍按十六进制输出coutdecxyzendl;/按十进制输出,其输出结果:

3030010243645420001e12c4000X1E0X12C0X41e12c400303001024,2022/10/21,19,4.3I/O流操作,【例4.4】使用setw控制符为同一行中输出的不同数据项分别指定宽度。

#include#includeusingnamespacestd;voidmain()doublevalues=1.23,35.36,653.7,4258.24;char*names=Zoot,Jimmy,Al,Stan;for(inti=0;i4;i+)outsetw(6)namesisetw(10)valuesiendl;,其输出结果:

Zoot1.23Jimmy35.36Al653.7Stan4358.24,2022/10/21,20,4.3I/O流操作,【例4.5】使用cout的width成员函数控制输出宽度为10个字符宽,且按右对齐方式输出数值。

#include#includeusingnamespacestd;voidmain()doublevalues=1.23,35.36,653.7,4258.24;char*names=Zoot,Jimmy,Al,Stan;for(inti=0;i4;i+)cout.width(10);cout.fill(*);coutvaluesiendl;,其输出结果:

*1.23*35.36*653.7*4358.24,2022/10/21,21,4.3I/O流操作,【例4.6】控制数据输出精度。

#include#includeusingnamespacestd;voidmain()doublevalues=1.23,35.36,653.7,4358.24;char*names=Zoot,Jimmy,Al,Stan;for(inti=0;i4;i+)coutsetiosflags(ios_base:

left)setw(6)namesiresetiosflags(ios_base:

left)setw(10)setprecision

(1)valuesiendl;,输出结果:

Zoot1Jimmy4e+001Al7e+002Stan4e+003,2022/10/21,22,4.3I/O流操作,输入输出流检测错误的操作【例4.7】输入不正确的数据时,导致程序出错。

#includevoidmain(void)inti,s;chart80;couti;s=cin.rdstate();couts=sn;,enumio_stategoodbit=0x00,eofbit=0x01,failbit=0x02,badbit=0x04,hardfail=0x80;,intrdstate();inteof();intfail();intbad();intgood();intclear(intflag=0);,2022/10/21,23,4.3I/O流操作,while(s)cin.clear();cin.getline(t,80);couti;s=cin.rdstate();coutnum=in;,2022/10/21,24,4.3.2用流成员函数实现输入输出,Put()函数。

put函数把一个字符写到输入流中。

Get()函数。

非格式化函数的功能与提取运算符“”很相像。

get函数在读入数据时包括空白字符。

Getline()函数。

getline成员函数的功能是允许从输入流中读取多个字符,并且允许指定输入终止字符(默认值是换行字符),在读取完成后,从读取的内容中删除该终止字符。

2022/10/21,25,4.3.2用流成员函数实现输入输出,【例4.8】put函数应用举例,有一个字符串“ENGLISH”,要求按反序输出。

#includevoidmain()char*p=ENGLISH;for(inti=6;i=0;i-)cout.put(*(p+i);cout.put(n);运行结果:

HSILGNE。

2022/10/21,26,4.3.2用流成员函数实现输入输出,【例4.9】get函数应用举例,从键盘接收字符并输出。

#includevoidmain()charch;while(ch=cin.get()!

=EOF)cout.put(ch);运行时输入:

Abcxyz123则输出结果:

Abcxyz123,2022/10/21,27,4.3.2用流成员函数实现输入输出,【例4.10】getline函数应用举例,为输入流指定一个终止字符。

本程序连续读入一串字符,直到遇到字符“t”时停止,字符个数最多不超过80个。

#includevoidmain()charline100;coutTypealineterminatedbytendl;cin.getline(line,81,t);coutline;coutn;,输入:

abcdefghhht。

输出结果:

abcdefghhh。

2022/10/21,28,4.4文件流和文件的输入输出,使用一个文件流,应遵循以下步骤:

打开一个文件。

其目的是将一个文件流对象与某个磁盘文件联系起来。

使用文件流对象的成员函数,将数据写入到文件中或从文件中读取数据。

关闭已打开的文件,即将文件流对象与磁盘文件脱离联系。

2022/10/21,29,4.4文件流和文件的输入输出,定义一个文件对象。

例如:

ifstreaminfile;/定义输入文件流对象outfileifstreaminfile(“filel.txt”);ofstreamoutfile;fstreamiofile;用文件流对象的成员函数open()或构造函数,打开一个文件。

例如:

outfile.open(“file2.txt”);用提取、插入运算或成员函数对文件读写。

例如:

infilech;用完文件后,使用文件流对象的成员函数关闭文件。

例如:

infile.close();,2022/10/21,30,4.4.1用流成员函数实现输入输出,文件流类常用成员函数,2022/10/21,31,4.4.1用流成员函数实现输入输出,文件打开方式说明,2022/10/21,32,4.4.4文本文件的输入输出(读写),【例4.11】复制一个文本文件到一个目标文件当中。

#includevoidmain(void)charch,f1256,f2256;coutf1;coutf2;ifstreamin(f1,ios:

in|ios:

nocreate);,2022/10/21,33,4.4.4文本文件的输入输出(读写),of

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

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1