面向对象程序设计07-1.输入输出流对象.课件.ppt

上传人(卖家):三亚风情 文档编号:3007745 上传时间:2022-06-21 格式:PPT 页数:74 大小:224.50KB
下载 相关 举报
面向对象程序设计07-1.输入输出流对象.课件.ppt_第1页
第1页 / 共74页
面向对象程序设计07-1.输入输出流对象.课件.ppt_第2页
第2页 / 共74页
面向对象程序设计07-1.输入输出流对象.课件.ppt_第3页
第3页 / 共74页
面向对象程序设计07-1.输入输出流对象.课件.ppt_第4页
第4页 / 共74页
面向对象程序设计07-1.输入输出流对象.课件.ppt_第5页
第5页 / 共74页
点击查看更多>>
资源描述

1、面向对象程序设计面向对象程序设计七、输入七、输入/ /输出流对象输出流对象n螺旋矩阵的输入输出问题螺旋矩阵的输入输出问题 n流流n无格式输入无格式输入/ /输出输出n输入输入/ /输出的格式控制输出的格式控制n自定义类型对象的输入输出自定义类型对象的输入输出n文件的输入文件的输入/ /输出问题输出问题第7章输入/输出流对象2022-5-303n编程输出编程输出M M* *M M的螺旋矩阵,要求数据间距与的螺旋矩阵,要求数据间距与M M相同相同。例如,。例如,4 4* *4 4的螺旋矩阵,其间距为的螺旋矩阵,其间距为4:4: 1 2 3 41 2 3 4 12 13 14 5 12 13 14

2、5 11 16 15 6 11 16 15 6 10 9 8 7 10 9 8 7第7章输入/输出流对象2022-5-304nC+C+没有定义任何用于执行输入或输出的语句,没有定义任何用于执行输入或输出的语句,但可以使用但可以使用C C语言中的标准语言中的标准I/OI/O函数函数printfprintf()()和和scanfscanf()()来解决此问题。来解决此问题。第7章输入/输出流对象2022-5-305【例】有如下程序:【例】有如下程序:#include stdio.h#include intint b=20; b=20;float a=5.6;float a=5.6;intint m

3、ain() main() printf(%dn,a printf(%dn,a);); scanf(%d,&a scanf(%d,&a);); scanf(%d,&b scanf(%d,&b);); printf(%dn,abc printf(%dn,abc);); return 0; return 0; 该程序的运行结果为:该程序的运行结果为:161061273623 45 4349980第7章输入/输出流对象2022-5-306nprintfprintf()()与与scanfscanf()()存在以下两个缺点:存在以下两个缺点:1 1非类型安全非类型安全2 2不可扩充性不可扩充性class

4、Aclass A A a;A a;printf(%?,aprintf(%?,a); /); /不知用什么格式符来识别不知用什么格式符来识别A A的对象的对象第7章输入/输出流对象2022-5-307nC+C+用用I/OI/O流来解决这个问题。流来解决这个问题。n下面先介绍流的概念。下面先介绍流的概念。第7章输入/输出流对象2022-5-308n在在C+C+程序中,数据可以从外部设备程序中,数据可以从外部设备( (键盘等键盘等) )流流入到计算机内存中,也可以从计算机内存流向外入到计算机内存中,也可以从计算机内存流向外部设备部设备( (屏幕或磁盘文件等屏幕或磁盘文件等) ),这种数据传递被称,这

5、种数据传递被称作输入输出。作输入输出。nC+C+将数据从一个位置到另一个位置的传递抽象将数据从一个位置到另一个位置的传递抽象为流。所谓流为流。所谓流(stream)(stream)就是指数据从一个位置流就是指数据从一个位置流向另一个位置。向另一个位置。流是字节的序列流是字节的序列。nC+C+的输入输出操作是基于流来处理的。的输入输出操作是基于流来处理的。第7章输入/输出流对象2022-5-309nC+C+基于流的概念处理数据的输入输出,因此也基于流的概念处理数据的输入输出,因此也称之为输入输出流,即称之为输入输出流,即I/OI/O流。流。nI/OI/O流具有两个基本的行为特征,一是从流中获流具

6、有两个基本的行为特征,一是从流中获取数据的操作称为取数据的操作称为提取操作提取操作,二是向流中添加数,二是向流中添加数据的操作称为据的操作称为插入操作插入操作。第7章输入/输出流对象2022-5-3010nC+C+标准库围绕流的概念,提供了一整套标准库围绕流的概念,提供了一整套I/OI/O流类流类簇,既可用于标准类型数据的簇,既可用于标准类型数据的I/OI/O,也能用于自,也能用于自定义类型对象的定义类型对象的I/OI/O,这种扩展性是,这种扩展性是C+C+最有价值最有价值的特点之一。的特点之一。nC+C+标准库提供的标准库提供的I/OI/O流类的各种操作都是类型安流类的各种操作都是类型安全全

7、(type safe)(type safe)的。不同类型的的。不同类型的I/OI/O流操作都是重流操作都是重载的,没有定义过载的,没有定义过I/OI/O功能的类型不具备功能的类型不具备I/OI/O操作操作的能力。的能力。第7章输入/输出流对象2022-5-3011nC+C+标准库提供的标准库提供的I/OI/O流类簇有两个平行基类:流类簇有两个平行基类:nstreambuf(filebufstreambuf(filebuf,stringbufstringbuf,strstreambufstrstreambuf) )nios(istreamios(istream,ostreamostream) )

8、niosios类有下面直接派生类类有下面直接派生类: :n输入流类输入流类istreamistream(ifstream(ifstream,istringstreamistringstream,istrstreamistrstream) )n输出流类输出流类ostreamostream(ofstream(ofstream,ostringstreamostringstream,ostrstreamostrstream) )(iostream-fstream(iostream-fstream,stringstreamstringstream,strstreamstrstream) )第7章输入/输

9、出流对象2022-5-3012nC+C+标准库提供的标准库提供的I/OI/O流按功能可分为如下流按功能可分为如下3 3类:类:n标准标准I/OI/O流:内存与标准输入输出设备流:内存与标准输入输出设备( (键盘、屏键盘、屏幕幕) )之间数据的传递;之间数据的传递;n文件文件I/OI/O流:内存与外部磁盘文件之间数据的传流:内存与外部磁盘文件之间数据的传递;递;n字符串字符串I/OI/O流:内存变量与表示字符串流的字符流:内存变量与表示字符串流的字符数组之间数据的传递。数组之间数据的传递。 第7章输入/输出流对象2022-5-3013n标准标准I/OI/O流预定义了流预定义了4 4个流类对象:个

10、流类对象:cincin、coutcout、cerrcerr、clogclog。n操作系统给把外设用文件名的方式进行管理,因操作系统给把外设用文件名的方式进行管理,因此程序设计要访问外设就跟访问文件一样方便。此程序设计要访问外设就跟访问文件一样方便。 第7章输入/输出流对象2022-5-3014nI/OI/O分为无格式支持的低级分为无格式支持的低级I/OI/O和具有格式支持的和具有格式支持的高级高级I/OI/O。n无格式支持的低级无格式支持的低级I/OI/O以基本字节为操作对象,以基本字节为操作对象,有格式支持的高级有格式支持的高级I/OI/O把若干字节组合成有意义把若干字节组合成有意义的单位,

11、如整数、浮点数、字符、字符串及用户的单位,如整数、浮点数、字符、字符串及用户自定义类型等等。自定义类型等等。第7章输入/输出流对象2022-5-3015n无格式输入无格式输入/ /输出就是按系统预定义的格式进行输出就是按系统预定义的格式进行的输入的输入/ /输出。输出。n按默认约定,每个按默认约定,每个C+C+程序都能使用标准程序都能使用标准I/OI/O流,流,如标准输入、标准输出。如标准输入、标准输出。ncincin用来处理标准输入,即键盘输入;用来处理标准输入,即键盘输入;coutcout用来处理用来处理标准输出,即屏幕输出。它们被定义在标准输出,即屏幕输出。它们被定义在iostreami

12、ostream头头文件中。文件中。n在使用在使用coutcout和和cincin前,要用编译预处理命令将所使用前,要用编译预处理命令将所使用的头文件包含到源程序中,其格式如下:的头文件包含到源程序中,其格式如下:#include iostream#include 第7章输入/输出流对象2022-5-3016n“”“”是预定义的插入运算符,作用在流类对象是预定义的插入运算符,作用在流类对象coutcout上,实现默认格式的屏幕输出。使用上,实现默认格式的屏幕输出。使用coutcout输输出表达式值到屏幕上的格式如下:出表达式值到屏幕上的格式如下:coutcoutE1E2E1E2EmEm; ;其中

13、,其中,E1E1、E2E2、EmEm为均为表达式。功能是计为均为表达式。功能是计算各表达式的值,并将结果输出到屏幕当前光标算各表达式的值,并将结果输出到屏幕当前光标位置处。位置处。第7章输入/输出流对象2022-5-3017ncoutcout是是ostreamostream流类的对象,它在流类的对象,它在iostreamiostream头文头文件中作为全局对象定义,其格式如下:件中作为全局对象定义,其格式如下:ostream cout(stdoutostream cout(stdout););其中,其中,stdoutstdout表示标准输出设备名(屏幕)。表示标准输出设备名(屏幕)。n在在os

14、treamostream流类中,对应每个基本数据类型定义流类中,对应每个基本数据类型定义运算符运算符“”重载函数为友元,它们在重载函数为友元,它们在ostreamostream中声明:中声明: ostream& operator(ostream&dest,charostream& operator(ostream&dest,char* * pSourcepSource);); ostream& operator(ostream& dest,int ostream& operator(ostream& dest,int source); source); ostream& operator(os

15、tream& dest,char ostream& operator”“”是预定义的提取运算符,作用在流类对象是预定义的提取运算符,作用在流类对象cincin上,实现默认格式的键盘输入。使用上,实现默认格式的键盘输入。使用cincin将数将数据输入到变量的格式如下:据输入到变量的格式如下:cincinV1V2V1V2VnVn; ; 其中,其中,V1V1、V2V2、VnVn都是变量。功能是暂停执都是变量。功能是暂停执行程序,等待用户从键盘输入数据,各数据间用行程序,等待用户从键盘输入数据,各数据间用空格或空格或TabTab键分隔,输入数据类型要与接受变量键分隔,输入数据类型要与接受变量类型一致,

16、输完后,按回车键结束。类型一致,输完后,按回车键结束。第7章输入/输出流对象2022-5-3019ncincin是是istreamistream流类的对象,它在流类的对象,它在iostreamiostream头文件头文件中作为全局对象定义,其格式如下:中作为全局对象定义,其格式如下:istream cin(stdinistream cin(stdin););n在在istreamistream流类中,对应每个基本数据类型定义流类中,对应每个基本数据类型定义运算符运算符“”重载函数为友元,它们在重载函数为友元,它们在istreamistream中声明:中声明:istream &operator(i

17、stream &sour,char istream &operator(istream &sour,char * *pDespDes););istream &operator(istream &sour,intistream &operator(istream &sour,int des); des);istream &operator(istream &sour,charistream &operator(istream &sour,char des); des);第7章输入/输出流对象2022-5-3020nC+C+提供了两种格式化输入提供了两种格式化输入/ /输出方式输出方式: :n一种

18、是用一种是用iosios类成员函数进行格式化输入输出类成员函数进行格式化输入输出n另一种是用专门的操作符函数进行格式化输入输出另一种是用专门的操作符函数进行格式化输入输出第7章输入/输出流对象2022-5-3021niosios类成员函数主要是通过对状态标志、输出宽类成员函数主要是通过对状态标志、输出宽度、填充字符以及输出精度的操作来完成输入度、填充字符以及输出精度的操作来完成输入/ /输出格式化。输出格式化。n输入输出格式由各种状态标志来确定,这些状态输入输出格式由各种状态标志来确定,这些状态标志在标志在iosios类中定义为枚举量。类中定义为枚举量。n由于该枚举量定义在由于该枚举量定义在i

19、osios类中,因此引用时必须类中,因此引用时必须包含包含iosios:前缀。使用时应该全部用符号名,绝前缀。使用时应该全部用符号名,绝不要用数值。不要用数值。第7章输入/输出流对象2022-5-3022enumenum skipwsskipws = 0 x0001 , = 0 x0001 ,/跳过输入空格跳过输入空格left = 0 x0002 ,left = 0 x0002 ,/按左对齐格式输出按左对齐格式输出right = 0 x0004 ,right = 0 x0004 ,/按右对齐格式输出按右对齐格式输出internal = 0 x0008 ,internal = 0 x0008 ,

20、/输出符号和基指示符后的填补输出符号和基指示符后的填补decdec = 0 x0010 , = 0 x0010 ,/转换为十进制转换为十进制(In / Out)(In / Out)octoct = 0 x0020 , = 0 x0020 ,/转换为八进制转换为八进制(In / Out)(In / Out)hex = 0 x0040 ,hex = 0 x0040 ,/转换为十六进制转换为十六进制(In / Out)(In / Out)showbaseshowbase = 0 x0080 , = 0 x0080 ,/输出显示基指示符输出显示基指示符showpointshowpoint = 0 x0

21、100 , = 0 x0100 ,/输出显示小数点输出显示小数点uppercase = 0 x0200 ,uppercase = 0 x0200 ,/大写十六进制输出大写十六进制输出showposshowpos = 0 x0400 , = 0 x0400 ,/正整数显示前加上正整数显示前加上“”scientific = 0 x0800 ,scientific = 0 x0800 , /输出用科学表示法表示的浮点数输出用科学表示法表示的浮点数fixed = 0 x1000 ,fixed = 0 x1000 ,/输出用固定小数点表示的浮点数输出用固定小数点表示的浮点数unitbufunitbuf

22、= 0 x2000 , = 0 x2000 ,/在输出操作后刷新所有流在输出操作后刷新所有流stdiostdio = 0 x4000 = 0 x4000/在输出操作后刷新在输出操作后刷新stdoutstdout和和stderrstderr n这些标志可以由这些标志可以由iosios类成员函数访问,也可以用类成员函数访问,也可以用操作符函数访问。操作符函数访问。第7章输入/输出流对象2022-5-3023niosios类有类有3 3个成员函数可以对状态标志进行操作,个成员函数可以对状态标志进行操作,分别为分别为flags()flags()、setfsetf()()和和unsetfunsetf()

23、(),并且,并且iosios类类还定义了一个还定义了一个longlong型数据成员记录当前状态标志型数据成员记录当前状态标志。这些状态标志可用位或运算符。这些状态标志可用位或运算符“| |”进行组合进行组合。n用用setfsetf函数设置状态标志,其一般格式如下:函数设置状态标志,其一般格式如下:long ios:long ios:setfsetf(long(long flags) flags)第7章输入/输出流对象2022-5-3024n用用unsetfunsetf函数清除状态标志,其一般格式如下:函数清除状态标志,其一般格式如下:long ios:unsetf(longlong ios:u

24、nsetf(long flags) flags)n用函数用函数flagsflags取状态标志有两种形式,其一般格取状态标志有两种形式,其一般格式分别如下:式分别如下:long ios:flagslong ios:flags() () long ios:flags(longlong ios:flags(long flag) flag)第一种形式返回与流相关的当前状态标志值;第第一种形式返回与流相关的当前状态标志值;第二种形式将流的状态标志值设置为二种形式将流的状态标志值设置为flagflag,并返回,并返回设置前的状态标志值。设置前的状态标志值。第7章输入/输出流对象2022-5-3025n例例

25、 使用使用iosios成员函数操作状态字成员函数操作状态字void showflags(longvoid showflags(long f); f);void main()void main() long f;long f;f=cout.flagsf=cout.flags(); /(); /取当前状态标志取当前状态标志showflags(fshowflags(f); /); /显示状态值显示状态值cout.setf(ios:showpos|ios:scientific|ios:fixedcout.setf(ios:showpos|ios:scientific|ios:fixed);); / /

26、追加状态标志追加状态标志f=cout.flagsf=cout.flags(); /(); /取当前状态标志取当前状态标志showflags(fshowflags(f); /); /显示状态值显示状态值cout.unsetf(ios:scientificcout.unsetf(ios:scientific); /); /从状态标志中去掉标志从状态标志中去掉标志f=cout.flagsf=cout.flags(); /(); /取当前状态标志取当前状态标志showflags(fshowflags(f); /); /显示状态值显示状态值f=cout.flags(ios:hexf=cout.flags

27、(ios:hex); /); /重新设置状态标志重新设置状态标志showflags(fshowflags(f););f=cout.flagsf=cout.flags(); /(); /取当前状态标志取当前状态标志showflags(fshowflags(f);); 第7章输入/输出流对象2022-5-3026n设置输出宽度函数有两种形式,其一般格式分设置输出宽度函数有两种形式,其一般格式分别如下:别如下:int ios:int ios:widthwidth(int len(int len) )int ios:int ios:widthwidth()()第一种形式是设置输出宽度,并返回原来的输第

28、一种形式是设置输出宽度,并返回原来的输出宽度;第二种形式是返回当前输出宽度,输出宽度;第二种形式是返回当前输出宽度,输出宽度为出宽度为0。第7章输入/输出流对象2022-5-3027n 例例 使用使用widthwidth控制输出宽度控制输出宽度#include iostream#include using namesoaceusing namesoace std; std;intint main() main() double values = 1.23,35.36,653.7,4358.24;double values = 1.23,35.36,653.7,4358.24; for(int

29、for(int i=0;i4;i+) i=0;i4;i+) cout.width(10); cout.width(10); cout valuesi cout valuesi n; n; 输出结果输出结果: : 1.23 1.23 35.36 35.36 653.7 653.7 4358.24 4358.24第7章输入/输出流对象2022-5-3028n填充字符的作用是当输出值不满输出宽度时用填充字符的作用是当输出值不满输出宽度时用填充字符来填充,默认填充字符为空格。它与填充字符来填充,默认填充字符为空格。它与width()width()函数配合使用,否则没有意义。函数配合使用,否则没有意义。

30、n设置填充字符函数有两种形式,其格式分别如设置填充字符函数有两种形式,其格式分别如下:下:char ios:char ios:fillfill(char ch(char ch) )char ios:char ios:fillfill()()第一种形式是重新设置填充字符,并返回设置第一种形式是重新设置填充字符,并返回设置前的填充字符;第二种形式是返回当前的填充前的填充字符;第二种形式是返回当前的填充字符。字符。第7章输入/输出流对象2022-5-3029n 例例 使用使用fillfill设置填充字符设置填充字符#include iostream#include using namesoaceus

31、ing namesoace std; std;intint main() main() double values = 1.23,35.36,653.7,4358.24;double values = 1.23,35.36,653.7,4358.24; for(int for(int i=0;i4;i+) i=0;i4;i+) cout.width(10); cout.width(10); cout.fill cout.fill(* *);); cout valuesi cout valuesi n; n; 输出结果:输出结果:* * * * * * *1.231.23* * * * * *3

32、5.3635.36* * * * * *653.7653.7* * * *4358.244358.24第7章输入/输出流对象2022-5-3030n设置浮点数输出精度有两种形式,其格式分别设置浮点数输出精度有两种形式,其格式分别如下:如下:int ios:int ios:precisionprecision(int(int p) p)int ios:int ios:precisionprecision()()第一种形式是重新设置输出精度,并返回设置第一种形式是重新设置输出精度,并返回设置前的输出精度;第二种形式是返回当前的输出前的输出精度;第二种形式是返回当前的输出精度。精度。第7章输入/输出

33、流对象2022-5-3031n例例 使用使用precisionprecision设置填充字符设置填充字符#include iostream#include using namesoaceusing namesoace std; std;intint main() main() intint j; j;j=cout.precisionj=cout.precision();();coutpresicion:jendlcoutpresicion:jendl; ;cout.precision(8);cout.precision(8);cout123.456789endlcout123.456789en

34、dl; ;coutpresicion:cout.precision()endlcoutpresicion:cout.precision()”或插入运算符或插入运算符“”后面来设定输入后面来设定输入/ /输出格式输出格式,即在读写对,即在读写对象之间插入一个修改状态的操作。象之间插入一个修改状态的操作。n其中有些函数没有参数,所以又叫其中有些函数没有参数,所以又叫操作符操作符。 第7章输入/输出流对象2022-5-3033n设置输入设置输入/输出宽度函数输出宽度函数setw(intsetw(int) )n设置输出填充字符函数设置输出填充字符函数setfill(intsetfill(int) )

35、n设置输出精度函数设置输出精度函数setprecision(intsetprecision(int) )n设置输入设置输入/输出整型数数制函数输出整型数数制函数decdec、hexhex和和octoct n取消输入结束符函数取消输入结束符函数wsws n控制换行操作符控制换行操作符endlendl n代表输出单字符代表输出单字符“0”的操作符的操作符endsends第7章输入/输出流对象2022-5-3034n 例例 使用使用setwsetw设置设置输入输入/ /输出宽度输出宽度#include iostream#include #include iomanip.h#include using

36、 namesoaceusing namesoace std; std;intint main() main() char char * *p=12345,p=12345,* *q=678;q=678;char f4,g4; /char f4,g4; /最后一位为最后一位为00intint i=10; i=10;coutpsetw(6)qsetw(4)pqendlcoutpsetw(6)qsetw(4)pqsetw(4)fg; /setw(4)fg; /设置输入宽度设置输入宽度coutfendlgendli:iendlcoutfendlgendli:iendl; ; return 0;retur

37、n 0; 运行结果:运行结果:12345 6781234567812345 6781234567812345123451231234545i:10i:10第7章输入/输出流对象2022-5-3035n 例例 分别用浮点、定点的方式表示一个实数分别用浮点、定点的方式表示一个实数#include iostream#include #include iomanip.h#include using namesoaceusing namesoace std; std;intint main() main() double f=22.0/7;double f=22.0/7;/在用浮点表示的输出中,在用浮点

38、表示的输出中,setprecision(nsetprecision(n) )表示实数有效位数表示实数有效位数coutfendlcoutfendl; /; /默认有效位数为默认有效位数为6 6coutsetprecision(3)fendlcoutsetprecision(3)fendl; /; /最小的有效位数为最小的有效位数为3 3/在用定点表示的输出中,在用定点表示的输出中,setprecision(nsetprecision(n) )表示小数有效位数表示小数有效位数coutsetiosflags(ios:fixedcoutsetiosflags(ios:fixed); ); coutse

39、tprecision(8)fendlcoutsetprecision(8)fendl; /; /小数位数为小数位数为8 8return 0;return 0; 运行结果:运行结果:3.142863.142863.143.143.142857143.14285714第7章输入/输出流对象2022-5-3036n例例 使用使用decdec、hexhex、octoct设置输出整型数制设置输出整型数制#include iostream#include #include iomanip.h#include using namesoaceusing namesoace std; std;intint ma

40、in() main() intint number=1001; number=1001; coutDecimal:decnumberendlcoutDecimal:decnumberendl Hexadecimal:hexnumberendl Hexadecimal:hexnumberendl Octal:octnumberendl Octal:octnumberendl; ;return 0;return 0; 运行结果:运行结果:Decimal:1001Decimal:1001Hexadecimal:3E9Hexadecimal:3E9Ocatl:1751Ocatl:1751第7章输入/输

41、出流对象2022-5-3037nc+c+提供了标准的操作符函数,也提供了建立自提供了标准的操作符函数,也提供了建立自定义操作符函数的方法。定义操作符函数的方法。n建立输出操作符函数的格式如下:建立输出操作符函数的格式如下:ostream & manip_name(ostreamostream & manip_name(ostream& stream)& stream) return stream;return stream; n其中其中manip_namemanip_name是自定义操作符函数的名字。是自定义操作符函数的名字。第7章输入/输出流对象2022-5-3038n例例 用户自定义输出操

42、作符函数用户自定义输出操作符函数#include iostream#include #include iomanip.h#include using namesoaceusing namesoace std; std;ostream& setup(ostreamostream& setup(ostream& stream)& stream) stream.setf(ios:leftstream.setf(ios:left););streamsetw(10)setfillstreamsetw(10)setfill($);($);return stream;return stream; intin

43、t main() main() cout10 setup10endlcout10 setup10endl; ;return 0;return 0; 运行结果:运行结果:10 1010 10&第7章输入/输出流对象2022-5-3039n建立输入操作符函数的格式如下:建立输入操作符函数的格式如下:istream & manip_name(istreamistream & manip_name(istream& stream)& stream) return stream;return stream; n其中其中manip_namemanip_name是自定义操作符函数的名字。是自定义操作符函数的

44、名字。第7章输入/输出流对象2022-5-3040n 例例 用户自定义输出操作符函数用户自定义输出操作符函数#include iostream#include #include iomanip.h#include using namesoaceusing namesoace std; std;istream& prompt(istreamistream& prompt(istream& stream)& stream) cin cinhex;hex; cout coutEnter number using hex formatprompti;prompti;coutiendlcoutiendl

45、; ;return 0;return 0; 运行结果:运行结果:Enter number using hex formatEnter number using hex format:ffff 255第7章输入/输出流对象2022-5-3041n上面都是对基本类型数据进行输入上面都是对基本类型数据进行输入/ /输出操作,输出操作,实际上,实际上,C+C+允许对自定义类型对象进行同样简允许对自定义类型对象进行同样简单语法的输入单语法的输入/ /输出。输出。n示例示例 自定义类型对象的输入自定义类型对象的输入/ /输出输出第7章输入/输出流对象2022-5-3042class Dateclass D

46、ate public: public: Date(int y,int m,int d) Year=y;Month=m;DayDate(int y,int m,int d) Year=y;Month=m;Day=d;=d;friend ostream& operator(ostream &stream,Datefriend ostream& operator(istream &stream,Datefriend istream& operator(istream &stream,Date &date); &date);private:private:int Year,Month,Dayint Y

47、ear,Month,Day; ;ostream& operator(ostream &stream,Dateostream& operator(ostream &stream,Date &date) &date) streamdate.Year/date.Month/date.Dayendl streamdate.Year/date.Month/date.Day(istream &stream,Dateistream& operator(istream &stream,Date &date) &date) streamdate.Yeardate.Monthdate.Daystreamdate.

48、Yeardate.Monthdate.Day; ;return stream;return stream; 第7章输入/输出流对象2022-5-3043intint main() main() Date date(2005,11,28);Date date(2005,11,28);coutCurrent date:dateendlcoutCurrent date:dateendl; ;coutcoutEnter new date:;date;date;coutNew date:dateendlcoutNew date:dateendl; ;return 0return 0; 输出结果为:输出结

49、果为:Current date:2005/11/28Current date:2005/11/28Enter new date:Enter new date:2007 12 92007 12 9New date:2007/12/9New date:2007/12/9第7章输入/输出流对象2022-5-3044n如何对文本文件和二进制文件进行输入和输出操如何对文本文件和二进制文件进行输入和输出操作?作?第7章输入/输出流对象2022-5-3045n文件一般指的是磁盘文件,它是存储在磁盘上的文件一般指的是磁盘文件,它是存储在磁盘上的相关数据集合。每个文件都有确定的名字。相关数据集合。每个文件都有确

50、定的名字。n需要长久保存并能够被重新读写的信息,将它保需要长久保存并能够被重新读写的信息,将它保存在外存文件上。存在外存文件上。nC+C+常用的文件有程序文件,数据文件以及设备常用的文件有程序文件,数据文件以及设备文件。键盘作为标准输入文件,显示器作为标准文件。键盘作为标准输入文件,显示器作为标准输出文件。输出文件。nC+C+标准库提供了相关的文件操作。对需要输入标准库提供了相关的文件操作。对需要输入的大批量数据,可以事先以文件的形式存放在磁的大批量数据,可以事先以文件的形式存放在磁盘上,在程序中,从指定的文件中读取数据;程盘上,在程序中,从指定的文件中读取数据;程序的运行结果也可以写入磁盘上

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(面向对象程序设计07-1.输入输出流对象.课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|