《语言输入输出流库.pptx》由会员分享,可在线阅读,更多相关《语言输入输出流库.pptx(57页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、9.19.1屏屏幕幕输输出出9.29.2键键盘盘输输入入9.39.3格格式式化化输输入入和和输输出出9.59.59.49.4磁盘文件的输入和输出内容字字符符串串流流第1页/共57页n数据的传送被看成像流水一样,从一处流向另一数据的传送被看成像流水一样,从一处流向另一处,数据的传递被称为数据流。处,数据的传递被称为数据流。n数据流中流动的字节序列。数据流中流动的字节序列。n数据流按其流向可分为数据流按其流向可分为:n输入流输入流 指的是字节流从输入设备流向内存。指的是字节流从输入设备流向内存。n输出流输出流 指的是字节流从内存流向输出设备。指的是字节流从内存流向输出设备。n 输入流和输出流都是带
2、有内存缓冲区的,用来存输入流和输出流都是带有内存缓冲区的,用来存放流中的数据。流是与内存缓冲区相对应的。放流中的数据。流是与内存缓冲区相对应的。第第9 9章章 C+C+语言的语言的I/OI/O流流第2页/共57页第第9 9章章 C+C+语言的语言的I/OI/O流流数据流分类:数据流分类:对系统指定的标准设备的输入和输出。对系统指定的标准设备的输入和输出。以外存磁盘文件为对象进行输入和输出。以外存磁盘文件为对象进行输入和输出。对内存中指定的空间进行输入和输出。对内存中指定的空间进行输入和输出。n重要的输入流类:nistreamifstreamnistrstreamn重要的输出流类:nostrea
3、mnofstreamnostrstream第3页/共57页1 1通用通用I/OI/O流类库流类库 使用这些功能时应包含头文件iostream.hiostream.h。iosistreamostreamiostream提供流状态设置功能提供从输入流提取数据的操作第第9 9章章 C+C+语言的语言的I/OI/O流流第4页/共57页2 2文件文件I/OI/O流类库流类库 使用有关文件读写操作时,应包含fstream.hfstream.h文件。iosistreamostreamiostreamfstreambaseifstreamofstreamfstream第5页/共57页C+C+的的I/OI/O对
4、对C C的发展的发展类型安类型安全和可扩展性全和可扩展性在在C C语言中,用语言中,用printfprintf和和scanfscanf进行输入输出,进行输入输出,往往不能保证所输入输出的数据是可靠的、安往往不能保证所输入输出的数据是可靠的、安全的。全的。在在C+C+的输入输出中,编译系统对数据类型的输入输出中,编译系统对数据类型进行严格的检查,凡是类型不正确的数据都不进行严格的检查,凡是类型不正确的数据都不可能通过编译。因此可能通过编译。因此C+C+的的I/OI/O操作是类型安操作是类型安全的。全的。C+C+的的I/OI/O操作是可扩展的,不仅可以用来输操作是可扩展的,不仅可以用来输入输出标准
5、类型的数据,也可以用于用户自定入输出标准类型的数据,也可以用于用户自定义类型的数据。义类型的数据。第6页/共57页在iostreamiostream头文件定义了4 4种流对象cincin是istreamistream类的对象,用来处理标准输入,即键盘输入。coutcout是ostreamostream类的对象,用来处理标准输出,即屏幕输出。CerrCerr是ostreamostream类的对象,用来处理标准错误信息,没有缓冲,发送给它的内容立即被输出。clogclog是ostreamostream类的对象,用来处理输出信息,它提供打印机输出。第第9 9章章 C+C+语言的语言的I/OI/O流流
6、第7页/共57页9.1.1 9.1.1 使用预定义的插入符使用预定义的插入符 这是一种最简单的,也是最常用的方式。这是一种最简单的,也是最常用的方式。格式如下:格式如下:cout cout n“”在在iostream头文件中对它们进行了重载。如头文件中对它们进行了重载。如nostream operator (int);nostream operator (float);nostream operator (char);nostream operator (char*);9 9.1.1 屏幕输出屏幕输出第8页/共57页例例 分析下列程序的输出结果。分析下列程序的输出结果。程序内容如下:程序内容如
7、下:#include#includevoidmain()coutThisisastring.endl;coutstrlen(Thisisastring.)endl;第9页/共57页例例分析下列程序的输出结果。分析下列程序的输出结果。#includevoidfun(int,int);voidmain()fun(20,0);fun(205,5);voidfun(inti,intj)if(j=0)cerrzeroencountered.n;elsecouti/jendl;第10页/共57页把一个字符写到输出流中。如:cout.put(a);:cout.put(a);参数可以是字符或ASCIIASCI
8、I码 cout.put(65+32)cout.put(65+32);连续调用putput函数cout.put(71).put(79).pu(79).put(68).put(n);cout.put(71).put(79).pu(79).put(68).put(n);GOOD9.1.2 9.1.2 使用成员函数使用成员函数put()put()输出一个字符输出一个字符第11页/共57页例例例例 分析下列程序的输出结果。分析下列程序的输出结果。分析下列程序的输出结果。分析下列程序的输出结果。#include#include void main()void main()coutHELLOendl;cou
9、tHELLOendl;cout.put(H).put(E).put(L).put(L).put(O).put(n);cout.put(H).put(E).put(L).put(L).put(O).put(n);char c1=A,c2=B;char c1=A,c2=B;int a=65;int a=65;cout.put(c1).put(c2)endl;cout.put(c1).put(c2)endl;cout.put(char(a).put(char(66)endl;cout.put(char(a).put(char(66)endl;第12页/共57页格式如下:cout.write(cons
10、t char*str,int ncout.write(const char*str,int n)#include#includevoidprint(char*s)cout.write(s,strlen(s).put(n);cout.write(s,6)endl;voidmain()char*str=IloveChina.;coutThestringisstr 从键盘上输入数据是带缓冲区的,输入完数据按回车键时才形成输入流。输入流中数据项的默认分隔符为空格、tab键、换行符等空白符。9 9.2.2 键盘输入键盘输入第14页/共57页例例 分析下列程序的输出结果。分析下列程序的输出结果。#incl
11、ude#include void main()void main()int i,j;int i,j;coutEnter i j:;coutij;cinij;coutcinendl;coutcinendl;couti,jendl;couti,jendl;第15页/共57页例例 使用提取符从键盘上获取整数,判断该数是大于使用提取符从键盘上获取整数,判断该数是大于0 0、小于、小于0 0还是等于还是等于0 0,当输入,当输入非整数时退出程序。非整数时退出程序。#include#include void main()void main()int n;int n;coutEnter a integer:
12、;coutn)while(cinn)if(n0)if(n0)cout0n;cout0n;else if(n0)else if(n0)coutn0n;coutn0n;else else coutn=0n;coutn=0n;coutno integer!n;coutno integer!n;第16页/共57页格式如下:char istream:get()char istream:get()#includevoidmain()charch;coutEntercharactors:;while(ch=in.get()!=EOFcout.put(ch);9.2.2 9.2.2 使用成员函数使用成员函数g
13、et()get()获取一个字符获取一个字符第17页/共57页 格式如下:cin.getline(char*buf,int n,char deline=n)cin.getline(char*buf,int n,char deline=n)9.2.3 9.2.3 使用成员函数getline()getline()读取一行字符第18页/共57页例例 分析下列程序的输出结果,该程序中使用了分析下列程序的输出结果,该程序中使用了getline()getline()函数。函数。#include#include void main()void main()char buf80;char buf80;int l
14、cnt(0),lmax(-1);int lcnt(0),lmax(-1);coutEnter coutlmax)if(countlmax)lmax=count;lmax=count;coutLine#lcnt:countendl;coutLine#lcnt:countendl;cout.write(buf,count).put(n).put(n);cout.write(buf,count).put(n).put(n);coutLargest line:lmaxendl;coutLargest line:lmaxendl;coutTotal line:lcntendl;coutTotal lin
15、e:lcntendl;第19页/共57页格式如下:cin.read(char*buf,int n)cin.read(char*buf,int n)#includevoidmain()charbuf80=;coutEnter:n;cin.read(buf,80);coutbufendl;9.2.4 9.2.4 使用成员函数使用成员函数read()read()读取若干字符读取若干字符第20页/共57页使用流对象的成员函数使用操作子的方法C+C+共有共有1515个个 输入输出输入输出 格式标记位,这格式标记位,这1515个标记位均个标记位均为为bitbit位,每个标记位都有自己的含义,且可以单独设置
16、。位,每个标记位都有自己的含义,且可以单独设置。格式标记位的取值为格式标记位的取值为0 0或或1 1:0 0表示关闭,表示关闭,1 1表示开启。表示开启。9 9.3 3 格式化输入和输出第21页/共57页9.3.1 9.3.1 使用成员函数设置流的格式化标志位标记位标记位含义含义boolalpha boolalpha 如开启,则输入和输出使用如开启,则输入和输出使用boolbool值(即值(即TureTure或或False False showbase showbase 如开启,则对于输出,使用如开启,则对于输出,使用C+C+基数前缀基数前缀(0 0,0 x)0 x)showpoint sho
17、wpoint 如开启,则显示末尾的小数点如开启,则显示末尾的小数点 uppercase uppercase 如开启,则对于如开启,则对于1616进制,使用大写字母;对进制,使用大写字母;对于于1010进制,使用进制,使用E E表示法表示法 showposshowpos 如开启,则在正数前面加上如开启,则在正数前面加上+1 1 1 1控制输入控制输入/输出格式的标志位输出格式的标志位第22页/共57页1 1 1 1控制输入控制输入/输出格式的标志位输出格式的标志位标记位标记位含义含义dec dec 如开启,则使用基数如开启,则使用基数1010(进行输出)(进行输出)oct oct 如开启,则使用
18、基数如开启,则使用基数8 8 hex hex 如开启,则使用基数如开启,则使用基数16 16 fixed fixed 如开启,则使用定点计数法如开启,则使用定点计数法 scientific scientific 如开启,则使用科学计数法如开启,则使用科学计数法left left 如开启,则使用左对齐如开启,则使用左对齐 right right 如开启,则使用右对齐如开启,则使用右对齐 internal internal 如开启,则符号或基数前缀左对齐,值右对齐如开启,则符号或基数前缀左对齐,值右对齐 第23页/共57页1 1 1 1控制输入控制输入/输出格式的标志位输出格式的标志位标记位标记位
19、含义含义skipws skipws 如开启,则跳过输入流中的空白字符如开启,则跳过输入流中的空白字符 unitbuf unitbuf 如开启,则每次输出操作后都会清空缓冲区如开启,则每次输出操作后都会清空缓冲区 uppercaseunitbufskipwsshowposshowpointshowbasescientificrightoct left internalhex fixeddec boolalpha001000000000010第24页/共57页维护标志字的成员函数:long flags()long flags()该函数返回当前标志字。long flag(long)long flag
20、(long)该函数使用参数更新标志字,返回更新前的标志字。long setf(long setbits,long field)long setf(long setbits,long field)将fieldfield所指定的标志位清零,将setbitssetbits所指的标志位置1 1,并返回设置前的标志字。2 2 2 2使用成员函数设置标志位使用成员函数设置标志位第25页/共57页 long setf(long)long setf(long)该函数用来设置参数的指定的那些标志位,并返回更新前的标志字。long unsetf(long)该函数用来清除参数所指定的那些标志位,并返回更新前的标志字
21、。在IOS类中,定义了:static const long basefield 其值为dec|oct|hexstatic const long ajustfield 其值为left|right|internalstatic const long floatfield 其值为scientific|fixed2 2 2 2使用成员函数设置标志位使用成员函数设置标志位第26页/共57页2 2 2 2使用成员函数设置标志位使用成员函数设置标志位#include using namespace std;void main()cout.setf(ios:oct,ios:basefield);cout“OC
22、T:48 ”48endl;cout.setf(ios:dec,ios:basefield);cout“DEC:48 ”48endl;cout.setf(ios:hex,ios:basefield);cout“HEX:48 ”48endl;cout.setf(ios:showbase);cout“HEX:48 ”48endl;cout.setf(ios:uppercase);cout“HEX:254”254endl;第27页/共57页1 1)设置输出数据所占宽度的成员函数 int width()int width()该函数用来返回当前输出的数据宽度。int width(int)int width
23、(int)该函数用来用设置当前输出的数据宽度,并返回更新前的宽度值。2 2)设置填充符的成员函数 char fill()char fill()该函数用来返回当前所用的填充符。char fill(char)char fill(char)该函数用来设置当前的填充符,并返回更新前的填充符。9.3.2 9.3.2 格式输出函数格式输出函数第28页/共57页3 3)设置浮点数输出精度的成员函数 int precision()int precision()该函数用来返回当前浮点数的有效数字的个数。int precision(int)int precision(int)该函数用来设置当前浮点数输出时有效数字
24、个数,并返回更新前的值。9.3.2 9.3.2 格式输出函数格式输出函数第29页/共57页 下面给出在默认情况下的某些参数的值:数据输出宽度默认情况下为实际宽度;默认情况下填空符为空格符;单精度浮点数最多提供7 7位有效数字,双精度浮点数最多提供1515位有效数字,长双精度浮点数最多提供1919位有效数字。9.3.2 9.3.2 格式输出函数格式输出函数第30页/共57页#include#include void main()void main()cout12345678901234567890endl;cout12345678901234567890endl;int i=12345;int
25、i=12345;coutiendl;coutiendl;cout.width(10);cout.width(10);coutiendl;coutiendl;cout.width(10);cout.width(10);cout.fill(*);cout.fill(*);cout.setf(ios:left,ios:adjustfield);cout.setf(ios:left,ios:adjustfield);coutiendl;coutiendl;cout.setf(ios:right,ios:adjustfield);cout.setf(ios:right,ios:adjustfield);
26、cout.precision(6);cout.precision(6);double d=123.456789;double d=123.456789;coutdendl;coutdendl;cout.setf(ios:scientific,ios:floatfield);cout.setf(ios:scientific,ios:floatfield);coutdendl;coutdendl;coutwidth:cout.width()endl;coutwidth:cout.width()endl;第31页/共57页使用操作子时需包含iomanip.hiomanip.h头文件。操作子可以直接被
27、插入符、提取符操作。9.3.3 9.3.3 操作子操作子第32页/共57页流类库所定义的操作子操作子名操作子名含含 义义输入输入/输出输出decdec数值数据采用十进制表示数值数据采用十进制表示I/OI/Ohexhex数值数据采用十六进制表示数值数据采用十六进制表示I/OI/Ooctoct数值数据采用八进制表示数值数据采用八进制表示I/OI/Osetbase(int n)setbase(int n)设置数制转换基数为设置数制转换基数为n n(n n为为0 0,8 8,1010,1616)0 0表示使用默认基数表示使用默认基数I/OI/Owsws提取空白符提取空白符I I第33页/共57页流类库
28、所定义的操作子操作子名操作子名含含 义义输入输入/输出输出endsends插入空字符插入空字符O Oflushflush刷新与流相关联的缓冲区刷新与流相关联的缓冲区 O Oresetiosflags(loresetiosflags(long)ng)清除参数所指定的标志位清除参数所指定的标志位 I/OI/Osetiosflags(longsetiosflags(long)设置参数所指定的标志位设置参数所指定的标志位 I/OI/Osetfill(int)setfill(int)设置填充字符设置填充字符O Osetprecision(intsetprecision(int)设置浮点数输出的有效数设置
29、浮点数输出的有效数字个数字个数O Osetw(int)setw(int)设置输出数据项的域宽设置输出数据项的域宽O O第34页/共57页#include#include#include#include void main()void main()cout12345678901234567890endl;cout12345678901234567890endl;int i=12345;int i=12345;coutiendl;coutiendl;coutsetw(10)iendl;coutsetw(10)iendl;coutresetiosflags(ios:right)setiosflags
30、(ios:left)coutresetiosflags(ios:right)setiosflags(ios:left)setfill(*)setw(10)iendl;setfill(*)setw(10)iendl;double d=123.456789;double d=123.456789;coutsetfill()setprecision(6)setw(10)dendl;coutsetfill()setprecision(6)setw(10)dendl;cout.setf(ios:scientific,ios:floatfield);cout.setf(ios:scientific,ios
31、:floatfield);coutdendl;coutdendl;coutwidth:cout.width()endl;coutwidth:cout.width()endl;第35页/共57页9.4 9.4 磁盘文件的磁盘文件的输入和输出输入和输出文件流是指磁盘文件流。操作:打开文件读写操作关闭文件磁盘文件文本文件二进制文件随机文件第36页/共57页1 1打开文件打开文件打开文件通常分为两步:先创建流对象再使用成员函数open()open()打开指定的文件。创建流对象方法:创建fstreamfstream类的对象创建ifstreamifstream类或ofstreamofstream类的对象。
32、9.4.1 磁盘文件的打开和关闭操作第37页/共57页(1 1)创建fstreamfstream类对象打开文件的方法 方法一:先创建对象,再打开文件 格式如下:fstream fstream;.open(.open(,);1 1打开文件打开文件第38页/共57页文件访问方式常量 方方 式式 名名用用 途途inin以输入(读)方式打开文件以输入(读)方式打开文件outout以输出(写)方式打开文件以输出(写)方式打开文件appapp以输出追加方式打开以输出追加方式打开ateate文件打开时,文件指针位于文件尾文件打开时,文件指针位于文件尾trunctrunc如果文件存在,将其长度截断为如果文件存
33、在,将其长度截断为0 0,并清除原有,并清除原有内容;如果文件不存在,则创建新文件内容;如果文件不存在,则创建新文件binarybinary以二进制方式打开文件,默认时为文本方式以二进制方式打开文件,默认时为文本方式第39页/共57页文件访问方式常量 方方 式式 名名用用 途途nocreatenocreate打开一个已有文件,如该文件不存打开一个已有文件,如该文件不存在,则打开失败在,则打开失败noreplacenoreplace如果文件存在,除非设置如果文件存在,除非设置ios:ateios:ate或或ios:appios:app,否则打开操作失败,否则打开操作失败ios:inlios:ou
34、tios:inlios:out以读和写的方式打开文件以读和写的方式打开文件ios:outlios:binaryios:outlios:binary以二进制写方式打开文件以二进制写方式打开文件ios:inlios:binaryios:inlios:binary以二进制读方式打开文件以二进制读方式打开文件第40页/共57页 方法二:创建对象和打开文件合二为一格式如下:fstream fstream (,););1 1打开文件打开文件第41页/共57页1 1打开文件打开文件(2)创建ifstream类对象或ofstream类对象打开文件的方法 方法一:先创建对象,再打开文件 格式如下:ofstrea
35、m;.open();或者 ifstream;.open();第42页/共57页1 1打开文件打开文件方法二:创建对象同时打开文件格式如下:ofstream ();或者 ifstream ();第43页/共57页2 2关闭文件关闭文件格式如下:.close();第44页/共57页先打开文件,打开文件时应先创建流对象,打开文件时应指出文件名和访问方式;文件打开后才可以进行读写操作;操作完毕后还要关闭文件。9.4.2 9.4.2 文本文件的读写操作文本文件的读写操作第45页/共57页例例 编程将一些字符信息写入到指定的文件中。编程将一些字符信息写入到指定的文件中。#include#include#i
36、nclude#include#include#include void main()void main()fstream out;fstream out;out.open(f1.txt,ios:out);out.open(f1.txt,ios:out);if(!out)if(!out)cerrf1.txt cant open.n;cerrf1.txt cant open.n;abort();abort();outthis is a string.n;outthis is a string.n;outthis is a program.n;outthis is a program.n;outok
37、!n;outok!n;out.close();out.close();第46页/共57页例例 编程从一个文本文件中读出的存放的信息。编程从一个文本文件中读出的存放的信息。#include#include#include#include#include#include void main()void main()fstream in;fstream in;in.open(f1.txt,ios:in);in.open(f1.txt,ios:in);if(!in)if(!in)cerrf1.txt cant open.n;cerrf1.txt cant open.n;abort();abort();
38、char s80;char s80;while(!in.eof()while(!in.eof()in.getline(s,sizeof(s);in.getline(s,sizeof(s);coutsendl;coutsendl;in.close();in.close();第47页/共57页例例 编程将一个文件的内容复制到另一个文件中。编程将一个文件的内容复制到另一个文件中。#include#include#include#include#include#include void main()void main()fstream infile,outfile;fstream infile,out
39、file;infile.open(f2.txt,ios:in);infile.open(f2.txt,ios:in);if(!infile)if(!infile)cerrf2.txt cant open.n;cerrf2.txt cant open.n;abort();abort();outfile.open(f3.txt,ios:out);outfile.open(f3.txt,ios:out);if(!outfile)if(!outfile)cerrf3.txt cant open.n;cerrf3.txt cant open.n;abort();abort();char ch;char
40、ch;while(infile.get(ch)while(infile.get(ch)outfile.put(ch);outfile.put(ch);infile.close();outfile.close();infile.close();outfile.close();第48页/共57页二进制文件的读写操作与文本文件的读写操作基本相同;区别在于二进制文件来说打开时需要加上ios:binaryios:binary方式。用于二进制文件读写函数通常使用readread()()函数和write()write()函数。9.4.3 9.4.3 二进制文件的读写操作二进制文件的读写操作第49页/共57页
41、例例 分析下列程序的输出结果,熟悉二进制文件的使用方法。分析下列程序的输出结果,熟悉二进制文件的使用方法。#include#include#include#include#include#include struct person struct person char name20;char name20;double height;double height;unsigned short age;unsigned short age;person people5=Li,1.88,35,person people5=Li,1.88,35,Hu,1.91,25,Hu,1.91,25,Gao,1.
42、75,33,Gao,1.75,33,Mao,1.72,32,Mao,1.72,32,Lu,1.69,50;Lu,1.69,50;第50页/共57页 void main()void main()fstream file;fstream file;file.open(f5.dat,ios:in|ios:out|ios:binary);file.open(f5.dat,ios:in|ios:out|ios:binary);if(!file)if(!file)cerrf5.dat cant open.n;cerrf5.dat cant open.n;abort();abort();for(int i(
43、0);i5;i+)for(int i(0);i5;i+)file.write(char*)&peoplei,sizeof(peoplei);file.write(char*)&peoplei,sizeof(peoplei);file.seekp(0,ios:beg);file.seekp(0,ios:beg);for(i=0;i5;i+)for(i=0;i5;i+)file.read(char*)&peoplei,sizeof(peoplei);file.read(char*)&peoplei,sizeof(peoplei);coutpeoplei.nametpeoplei.heighttpe
44、oplei.ageendl;coutpeoplei.nametpeoplei.heighttpeoplei.ageendl;file.close();file.close();第51页/共57页文件读取方式:l 顺序读取l 随机读取l打开、关闭文件l读写数据l定位读、写指针9.4.4 9.4.4 随机随机访问数据文件访问数据文件第52页/共57页定位读、写指针的函数:在类istreamistream中定义的定位读指针的成员函数有如下几种:l istream&istream:seekg(istream&istream:seekg();l istream&istream:seekg istream
45、&istream:seekg(,);l long int&istream:tellg()long int&istream:tellg();9.4.4 9.4.4 随机随机访问数据文件访问数据文件第53页/共57页 在类ostreamostream中定义的定位写指针的成员函数有如下几种:l ostream&ostream:seekp(ostream&ostream:seekp();l ostream&ostream:seekp ostream&ostream:seekp(,);l long int ostream:tellp()long int ostream:tellp();具有下述含义:l
46、cur=1 /cur=1 /相对于当前读/写指针所指的位置l beg=0 /beg=0 /相对于文件头的位置l end=2 /end=2 /相对于文件尾的位置第54页/共57页#include#include#include#include void main()void main()fstream file(f6.dat,ios:in|ios:out|ios:binary);fstream file(f6.dat,ios:in|ios:out|ios:binary);for(int i(1);i=10;i+)for(int i(1);i=10;i+)file.write(char*)&i,s
47、izeof(int);file.write(char*)&i,sizeof(int);long int pos=file.tellp();long int pos=file.tellp();coutposendl;coutposendl;for(i=11;i=20;i+)for(i=11;i=20;i+)file.write(char*)&i,sizeof(int);file.write(char*)&i,sizeof(int);file.seekg(pos);file.seekg(pos);file.read(char*)&i,sizeof(int);file.read(char*)&i,s
48、izeof(int);coutThe data stored is iendl;coutThe data stored is iendl;file.seekp(-4,ios:end);file.seekp(-4,ios:end);file.read(char*)&i,sizeof(int);file.read(char*)&i,sizeof(int);coutThe data stored is iendl;coutThe data stored is iendl;coutfile.tellp()endl;coutfile.tellp()endl;file.close();file.close();第55页/共57页小结小结主要内容I/O流的概念、输出流、输入流、输入/输出流。达到的目标理解I/O流的概念,学会使用I/O流类库实现文件输入/输出及格式控制。第56页/共57页感谢您的观看!第57页/共57页