面向对象程序设计(同名117)_第1页
面向对象程序设计(同名117)_第2页
面向对象程序设计(同名117)_第3页
面向对象程序设计(同名117)_第4页
面向对象程序设计(同名117)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章 C+输入/输出流类库 C语言输入输出系统的缺陷 C+输入输出流 C+输入输出流类库 I/O格式控制 文件操作C语言I/O系统缺陷 printf()与scanf()只可用于输入输出基本数据类型。 C+可通过重载运算符“”和“”对结构类型实现输入和 输出。当输入输出数据与预设格式不匹配时,C编译系统不能发现问题,以保证其调用的正确性。 例printf()与scanf()的缺陷int j=10;float f=2.3void fn()printf(“%d”,f); / 按整型数据解码方式输出f / 前两个字节的内容 scanf(“%d”,&f); / 按整型数据编码方式将数据存入f / 前两

2、个字节中 scanf(“%d”,j); / 将一个整数存入地址为0 x000A / 的内存段中 printf(“%d”, “good”); / 输出“good”的地址值C+输入输出流 流(stream):主机与外部设备介质间的数据流。 标准I/O流的设备名:C+名字设备C中的名字默认值cin键盘stdin标准输入 cout屏幕 stdout标准输出 cerr屏幕 stderr标准错误输出(非缓冲方式) clog打印机 stdprn标准错误输出(缓冲方式)I/O 流类库 streambuf 类 streambuf 类:提供对缓冲区的低级操作,设置缓冲区、操作缓冲区指针、向缓冲区存取字符。 str

3、eambuf 类及其派生类:streambuffilebufstrstreambufconbufI/O 流类库 ios 类 ios 类:提供对文件和设备的I/O操作。I/O 流类库 ios 类(续) ios流类及其派生类均带有指向streambuf类的指针。 ios流类的直接派生类: istream(标准输入流类) ostream(标准输出流类) fstreambase(文件流类) strstreambase(串流类)标准I/O 流类 标准输出类(ostream):提供系统标准输出设备接口,完成数据输出操作。 标准输入类(istream):提供系统标准输入设备接口,完成数据输入操作。 使用标准

4、输入输出类需包含头文件“istream.h”、 “ostream.h”或 “iostream.h”。 例1 例2 cin在头文件中被定义为istream类的全局对象。 cout、cerr和clog为ostream类的全局对象。标准I/O流类实例1/example7-1#include main()coutThis is a test!endl;return 0;This is a test!标准I/O流类实例2/example7-2#include#includemain()char *p=new char20; coutp; coutp=pendl;return 0;please input

5、 a string: computerp=computerI/O格式控制 用流对象的成员函数控制数据输入输出格式。 例1 例2函数原型功 能 int ios:width(int w);设置输出域宽w,缺省值为0 int ios:width();返回当前域宽值 int ios:precision(int p);设置有效数个数p int ios:precision();返回当前有效数设置值 char ios:fill(char ch);设置填充字符ch,缺省值为空格 char ios:fill();返回当前填充字符I/O格式控制(续) 输出格式控制符:头文件iomanip.h (包含iostrea

6、m.h)中定义,可直接插入流中,控制输出格式。 例3 例4控制符流成员函数功能 dec flags(10)置基数为10 hex flags(16)置基数为16 oct flags(8)置基数为8 setfill(c ) flags(c )设填充字符为c setprecision(n) precision(n)设输出有效数个数 setw(n) width(n)设输出域宽为nI/O格式控制实例1/example7-3#includemain()for(int i=1;i8;i+)cout.fill( ); cout.width(i); cout ; cout.fill(m); cout.width

7、(15-2*i); coutmendl; return 0; mmmmmmmmmmmmm mmmmmmmmmmm mmmmmmmmm mmmmmmm mmmmm mmm mI/O格式控制实例2/example7-4#includevoid main()double f=12.34567; coutf=f; cout default precision=cout.precision()endl; cout.precision(2); coutf=f; cout precision=cout.precision()endl; cout.precision(5); coutf=f; cout pre

8、cision=cout.precision()endl;f=12.3457 default precision=6f=12 precision=2f=12.346 precision=5I/O格式控制实例3/example7-5#includevoid main()double f=12.34567; coutf=fendl; coutsetprecision(2)f=fendl; coutsetprecision(5)f=fendl;f=12.3457f=12f=12.346I/O格式控制实例4/example7-6#includemain()for(int i=1;i8;i+)coutse

9、tfill( )setw(i) setfill(m); coutsetw(15-2*i)mendl; return 0;mmmmmmmmmmmmm mmmmmmmmmmm mmmmmmmmm mmmmmmm mmmmm mmm m文件操作 文件操作:打开、关闭、数据输入、数据输出。(包含头文件fstream.h) 文件流类:文件流类基类功能 fstream iostream文件输入输出 ifstream istream文件输入 oftream ostream文件输出文件操作(续1) 定义文件流对象 文件流类 文件流对象名;/建立文件流对象 文件流类 文件流对象名(文件名); / 建立文件对象,

10、同时打开文件 文件流变量:建立文件流对象的检测值, 0失败, 1成功 通过文件对象打开文件:对象名.open(文件名,文件打开模式, 文件保护模式);文件操作(续2) 文件打开模式: 标志含义 ios:ate如果文件存在,数据追加在文件尾 ios:in打开文件,读出数据(ifstream默认) ios:out打开文件,写入数据(oftream默认) ios:trunc打开文件,清除所有数据 ios:nocreat若文件不存在,返回错误 ios:noreplace若文件存在,返回错误 ios:binary以二进制方式打开文件(否则默认为文本)文件操作(续3) 文件保护模式:例:fstream f; f.open(“file1”,ios:out|ios:in);文件关闭:清理文件缓冲区,调用流对象成员函数close()。 例 标志含义 filebuf:openprot兼容共享方式(默认) filebuf:sh_none独占,不共享 filebuf:sh_read允许读共享 filebuf:sh_write允许写共享文件操作实例1#include /example7-7main()ofstream fout(testfile); if (!fout) coutCannot open

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论