流类库与输入输出.ppt_第1页
流类库与输入输出.ppt_第2页
流类库与输入输出.ppt_第3页
流类库与输入输出.ppt_第4页
流类库与输入输出.ppt_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、流类库与输入输出操作,一、流的概念及流类库结构,东南大学软件学院(苏州 ) C+程序设计,流:是一种抽象,负责在数据的生产者和数据的消费者之间建立联系, 并管理数据的流动,一、流的概念及流类库结构,东南大学软件学院(苏州 ) C+程序设计,cin,cin、cerr、clog,str,东南大学软件学院(苏州 ) C+程序设计,二、标准输入输出流,标准输入输出流,cin:标准输入 istream类的对 象用来处理标准 输入,即键盘输 入。,cout:标准输出 ostream类的对 象,用来处理标 准输出,即屏幕 输出。,cerr:标准输出 ostream类的对 象,用来处理标 准出错信息,不 带缓

2、冲区,发给 它内容立即输出,clog:标准输出 ostream类的对 象,用来处理标 出错信息,带缓 区,缓冲区满时 被输出,二、标准输入输出流,东南大学软件学院(苏州 ) C+程序设计,有一元二次方程ax2+bx+c=0,其一般解为x1,2=(-bb2-4ac)/2a,但若a=0,或b2-4ac0时,用此公式出错。,#include #include using namespace std; int main( ) float a,b,c,disc; coutabc; if (a=0)cerra is equal to zero,error!endl; else if (disc=b*b-4

3、*a*c)0) cerrdisc=b*b-4*a*c0endl; else coutx1=(-b+sqrt(disc)/(2*a)endl; coutx2=(-b-sqrt(disc)/(2*a)endl; return 0; ,东南大学软件学院(苏州 ) C+程序设计,二、标准输入输出(格式控制),1.使用控制符控制格式,注意:这些控制符号都在iomanip头文件中,使用时应在程序中包含相关 头文件,#include #include /不要忘记包含此头文件 using namespace std; int main() int a; couta; coutdec:decaendl; /以十

4、进制形式输出整数 couthex:hexaendl; /以十六进制形式输出整数a coutoct:setbase(8)aendl; /以八进制形式输出整数a char *pt=China; /pt指向字符串China coutsetw(10)ptendl; /指定域宽为10,输出字符串 coutsetfill(*)setw(10)ptendl; /指定域宽10,输出字符 double pi=22.0/7.0; /计算pi值 coutsetiosflags(ios:scientific)setprecision(8);/按指数形式输出, coutpi=piendl; /输出pi值 coutpi=

5、setprecision(4)piendl; /改为4位小数 coutpi=setiosflags(ios:fixed)piendl;/改为小数形式输出 return 0; ,东南大学软件学院(苏州 ) C+程序设计,二、标准输入输出(格式控制),3.使用流对象的成员函数控制格式输出,除了可以用控制符来控制输出格式外,还可以通过调用流对象cout中用于控制输出格式的成员函数来控制输出格式。,#include using namespace std; int main( ) int a=21 cout.setf(ios:showbase);/显示基数符号(0 x或0) coutdec:aendl

6、; /默认以十进制形式输出a cout.unsetf(ios:dec); /终止十进制的格式设置 cout.setf(ios:hex); /设置以十六进制输出的状态 couthex:aendl; /以十六进制形式输出a cout.unsetf(ios:hex); /终止十六进制的格式设置 cout.setf(ios:oct); /设置以八进制输出的状态 coutoct:aendl; /以八进制形式输出a cout.unseft(ios:oct); char *pt=China; /pt指向字符串China cout.width(10); /指定域宽为10 coutptendl; /输出字符串

7、cout.width(10); /指定域宽为10 return 0; ,三、文件输入输出,ASCII文件与二进制文件,ASCII文件提供了高级的输入输出功能,把若干个字节转换为一个有意义的单位,然后以ASCII字符形式输入输出,二进制文件提供低级的输入输出功能,这种输入输出不经过转化,因此效率较高,传输速度快,效率高,三、文件输入输出,东南大学软件学院(苏州 ) C+程序设计,文件流与文件流类,三、文件输入输出,东南大学软件学院(苏州 ) C+程序设计,1.打开磁盘文件,方式一 ofstream outfile; outfile.open(f1.dat,ios:out);,方式二 ofstre

8、am outfile(“f.dat”,”ios:out”);,三、文件输入输出,东南大学软件学院(苏州 ) C+程序设计,2.文件有效性检查及关闭,a.有效性检查: if(!infile) cerr“error:unable to open input file”; exit(1) ,b.关闭文件: infile.close();,c.将文件流与新文件重新关联: ifstream infile(“in”); infile.close(); infile.open(“next”);,三、文件输入输出,东南大学软件学院(苏州 ) C+程序设计,#include using namespace st

9、d; int main( ) int a10; ofstream outfile(f1.dat,ios:out); if(!outfile) cerrai; outfileai ; outfile.close(); return 0; ,#include int main( ) int a10; ifstream infile(f1.dat,ios:in|ios:nocreate); if(!infile) cerrai coutai “; infile.close(); return 0; ,1. 对ASCII文件的操作,三、文件输入输出,东南大学软件学院(苏州 ) C+程序设计,2. 对二

10、进制文件进行读写,2.1 利用成员函数read和write读写二进制文件,istream .read(char *buf,int len) ostream .write(char *buf,int len),2.2 与文件指针有关的流成员函数,三、文件输入输出,东南大学软件学院(苏州 ) C+程序设计,现有一批学生数据存储于(stuInfo.txt),数据成员包括(学号、姓名 性别),要求输入一条学生信息,写入文件后,显示其他所有学生的信息,流类库与输入输出操作,东南大学软件学院(苏州 ) C+程序设计,四、字符串流,东南大学软件学院(苏州 ) C+程序设计,1.建立输出字符串流对象,ostr

11、eam:ostream(char *buf,int n,int mode=ios:out),2.建立输入字符串对象,istream:istream(char *buf,int n),istream:istream(char *buf),四、字符串流,东南大学软件学院(苏州 ) C+程序设计,using namespace std; struct student int num; char name20; float score; int main( ) student stud3=1001,Li,78,1002,Wang,89.5,1004,Fun,90; char c50; /用户定义的字符数组 ostrstream strout(c,50); /建立输出字符串流,与数组c建立关联,缓冲区长30 for(int i=0;i3;i+) /向字符数组c写3个学生的数据 strout studi.num studi.score; stroutends; /ends是C+的I/O操作符,插入一个0 coutarray

温馨提示

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

评论

0/150

提交评论