第13章-C++输入输出流《C++程序设计基础教程》课件.pptx
- 文档编号:195074
- 上传时间:2022-10-06
- 格式:PPTX
- 页数:58
- 大小:484.30KB
第13章-C++输入输出流《C++程序设计基础教程》课件.pptx
《第13章-C++输入输出流《C++程序设计基础教程》课件.pptx》由会员分享,可在线阅读,更多相关《第13章-C++输入输出流《C++程序设计基础教程》课件.pptx(58页珍藏版)》请在冰豆网上搜索。
第13章C+输入输出流C+程序设计基础教程课件,2,第13章C+输入/输出流,13.1流的概念13.2标准输入输出流12.3文件流12.4小结,3,13.1C+的输入和输出,C+的输入与输出
(1)对系统指定的标准设备的输入和输出。
即标准I/O。
(2)以外存磁盘文件为对象进行输入和输出,即文件I/O。
(3)对指定的内存空间进行输入和输出。
即串I/O。
输入时,字节流从输入设备(如键盘、磁盘)流向内存;输出时,字节流从内存流向输出设备(如屏幕、打印机、磁盘等)。
4,I/O流的概念,当程序与外界环境进行信息交换时,存在着两个对象,一个是程序中的对象,另一个是文件对象。
流是一种抽象,它负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动。
程序建立一个流对象,并指定这个流对象与某个文件对象建立连接,程序操作流对象,流对象通过文件系统对所连接的文件对象产生作用。
读操作在流数据抽象中被称为(从流中)提取,写操作被称为(向流中)插入。
5,流类(streamclass):
C+的I/O库中的类。
流对象:
用流类定义的对象。
预先定义的流对象cin:
标准输入。
cout:
标准输出。
cerr:
标准错误输出,没有缓冲。
clog:
类似于cerr,有缓冲。
13.1.3C+的输入输出流,6,1.iostream类库中有关的类,7,1.iostream类库中有关的类,8,13.2标准输出流,标准输出流:
流向标准输出设备的数据。
1.cout(consoleoutput)流对象cout流开辟内存缓冲区,用来存放流数据,遇endl时,不论缓冲区是否已满,立即输出流中所有数据,然后插入一个换行符,并刷新流(清空缓冲区)。
2.cerr流对象作用:
向标准错误设备输出有关出错信息。
3.clog流对象作用:
和cerr相同。
区别:
cerr不经过缓冲区,直接向显示器上输出有关信息,而clog的信息存放在缓冲区,缓冲区满后或遇endl时输出。
9,例13.1一元二次方程ax2+bx+c=0,#includeusingnamespacestd;intmain()couthelloworld-coutendl;cerrhelloworld-cerrendl;return0;,testfilecout.txt,testfilecerr.txt,10,13.2.2格式输出,1.使用控制符控制输出格式输出数据的控制符见书中表13.3。
注:
这些控制符是在头文件iomanip中定义的,因而程序中应当包含iomanip。
11,例13.3用流控制成员函数输出数据,intmain()inta=21cout.setf(ios:
showbase);/显示基数符号(0x或0)coutdec:
aendl;/默认十进制形式cout.unsetf(ios:
dec);/终止十进制的格式设置cout.setf(ios:
hex);/以十六进制输出的状态couthex:
aendl;/以十六进制形式输出acout.unsetf(ios:
hex);/终止十六进制的格式设置cout.setf(ios:
oct);/设置以八进制输出的状态coutoct:
aendl;/以八进制形式输出a,12,cout.unseft(ios:
oct);char*pt=China;/pt指向字符串Chinacout.width(10);/指定域宽为10coutptendl;/输出字符串cout.width(10);/指定域宽为10cout.fill(*);/指定空白处以*填充coutptendl;/输出字符串doublepi=22.0/7.0;/输出pi值cout.setf(ios:
scientific);/指定用科学记数法输出coutpi=;/输出pi=,例13.3用流控制成员函数输出数据,13,cout.width(14);/指定域宽为14coutpiendl;/输出pi值cout.unsetf(ios:
scientific);/终止科学记数法状态cout.setf(ios:
fixed);/指定用定点形式输出cout.width(12);/指定域宽为12cout.setf(ios:
showpos);/正数输出+号cout.setf(ios:
internal);/数符出现在左侧cout.precision(6);/保留6位小数coutpiendl;/输出pi,注意数符+的位置,例13.3用流控制成员函数输出数据,14,13.3标准输入流,从标准输入设备(键盘)流向程序的数据。
istream类库为标准输入流提供了数种输入功能13.3.1cin流类istream的对象,从标准输入设备获取数据。
提取数据时跳过空格、tab键、换行符等。
注:
只有按回车键后,该行数据才被送入键盘缓冲区,形成输入流。
15,
(1)不带参数的get函数形式:
cin.get()作用:
从输入流中提取一字符,函数返回读入字符。
遇到文件结束符,返回EOF。
(2)带一个参数的get函数形式:
cin.get(ch)作用:
从输入流中读取一字符,赋给变量ch。
成功则非0(真),失败(遇文件结束符)则0(假)。
1.用get函数读入一个字符,16,例13.6用get函数读入字符,intmain()intc;while(c=cin.get()!
=EOF)cout.put(c);return0;,intmain()charc;while(cin.get(c)cout.put(c);return0;,17,(3)有3个参数的get函数,调用形式cin.get(字符数组,字符个数n,终止字符)或cin.get(字符指针,字符个数n,终止字符)作用:
从输入流中读取n-1个字符,赋给指定字符数组,若在读取n-1个字符前遇到指定的终止字符,则提前结束。
成功返真,失败返假。
18,voidmain()charch20;coutenterasentence:
endl;cin.get(ch,10,n);/指定换行符为终止字符coutchendl;,enterasentence:
IstudyC+veryhard.Istudy,(3)有3个参数的get函数,19,2.用成员函数getline函数读入一行字符,作用:
从输入流中读取一行字符。
用法:
与带3个参数的get函数类似。
cin.getline(字符数组(或字符指针),字符个数n,终止标志字符),20,例13.7用getline函数读入一行字符,intmain()charch20;coutch;coutThestringreadwithcinis:
chendl;cin.getline(ch,20,/);/读19个字符或遇/结束coutThesecondpartis:
chendl;cin.getline(ch,20);/读19个字符或遇/n结束coutThethirdpartis:
chendl;,cinPKcin.getline(),21,13.3.3istream类的其他成员函数,1.eof函数调用形式:
cin.eof();如果到达文件末尾(遇文件结束符),函数值为非0(真),否则为0(假)。
2.peek函数作用:
观测下一个字符。
调用形式:
cin.peek();注意:
只是观测,指针位置不变。
22,eek和putback函数,3.putback函数调用形式:
cin.putback(ch);作用:
将前面用get或getline从输入流中读取字符ch返回到输入流,插入到当前指针位置。
4.ignore函数调用形式:
cin,ignore(n,终止字符)作用:
跳过输入流中n个字符,或遇指定终止符提前结束(跳过包括终止符在内的若干字符)。
ighore(5,A),23,intmain()charch20;cin.get(ch,20,/);coutThefirstpartis:
chendl;cin.ignore();/跳过输入流中一个字符cin.get(ch,20,/);coutThesecondpartis:
chendl;return0;,IlikeC+./IstudyC+./Iamhappy.Thefirstpartis:
IlikeC+.Thesecondpartis:
IstudyC+.,例13.10用ignore函数跳过输入流中的字符,24,13.3文件流,13.4.1文件的概念文件:
存储在外部介质上数据的集合。
属性:
名字,类型、属主、创建日期、修改日期、访问权限等。
分类1用户角度程序文件(programfile)数据文件(datafile)分类2数据的组织形式ASCII文件:
文本文件、字符文件二进制文件:
内部格式文件、字节文件,25,13.3.2文件流的操作,文件流:
以外存文件为IO对象的数据流。
输出文件流:
从内存流向外存文件的数据输入文件流:
从外存文件流向内存的数据每个文件流都有一个内存缓冲区对应。
文件流与文件:
文件流本身不是文件,而只是以文件为输入输出对象的流。
1)ifstream:
istream派生类。
支持从文件的输入。
2)ofstream:
ostream派生类。
支持向文件的输出。
3)fstream:
iostream派生类。
支持文件的输入输出。
对磁盘文件的操作通过文件流对象实现。
13.3.2文件流的操作,在C+中对文件进行操作分为以下几个步骤:
(1)建立文件流对象;
(2)打开或建立文件;(3)进行读写操作;(4)关闭文件;前两步也可合并为一步。
27,13.4.3文件的打开与关闭,1.打开磁盘文件在文件读写之前做必要的准备工作。
(1)为文件流对象和指定磁盘文件建立关联。
(2)指定文件的工作方式。
(1)调用文件流的成员函数openofstreamoutfile;/定义ofstream类对象outfile.open(f1.dat,ios:
out);
(2)在定义文件流对象时指定参数oftreamoutfile(f1.dat,ios:
out);,28,若open函数调用失败,返回值为0(假);若构造函数打开失败,则流对象的值为0。
2.关闭磁盘文件成员函数close。
outfile.close();关闭:
解除磁盘文件与文件流的关联。
13.4.3文件的打开与关闭,29,13.4.4对ASCII文件的操作,ASCII文件的读写操作
(1)用文件流对象和流插入运算符输出输入标准类型的数据。
(2)用文件流的put,get,getline等成员函数进行字符的输入输出。
30,例13.11从键盘输入10个整数到文件,#includevoidmain()inta10;ofstreamoutfile(f1.dat,ios:
out);if(!
outfile)/如失败,返回0值cerrai;outfileai;/向磁盘文件输出数据outfile.close();/关闭文件,enter10integernumbers:
13524610879,31,例13.12文件中读入10个整数放在数组,#includeintmain()inta10,max,i,order;ifstreaminfile(f1.dat,ios:
in);if(!
infile)cerrai;/从文件读入10个整数,放在a数组coutai;max=a0;order=0;,32,for(i=1;imax)max=ai;/将当前最大值放在max中order=i;/将最大值的序号放在order中coutmax=maxendlorder=order;infile.close();return0;,13524610879max=10order=6,例13.12,例13.13写入文本文件的例子。
#includevoidmain()ofstreamfile(file.txt,ios:
out|ios
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+程序设计基础教程 13 C+ 输入输出 程序设计 基础教程 课件