第10章IO流标准库.ppt

上传人:sccc 文档编号:5637270 上传时间:2023-08-04 格式:PPT 页数:39 大小:209.51KB
返回 下载 相关 举报
第10章IO流标准库.ppt_第1页
第1页 / 共39页
第10章IO流标准库.ppt_第2页
第2页 / 共39页
第10章IO流标准库.ppt_第3页
第3页 / 共39页
第10章IO流标准库.ppt_第4页
第4页 / 共39页
第10章IO流标准库.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《第10章IO流标准库.ppt》由会员分享,可在线阅读,更多相关《第10章IO流标准库.ppt(39页珍藏版)》请在三一办公上搜索。

1、第二部分 C+面向对象程序设计,第十章 C+I/O流标准库,金志刚,10.1 C+I/O流概述,1.I/O流 外部设备和计算机内存之间流动的一系列字节。输入时,字节从输入设备(如从键盘、磁盘等)流向内存;输出时,字节从内存流向输出设备(如显示器、打印机、磁盘等)。,2.C+I/O流类库,I/O流类列表,10.1 C+I/O流概述,4.预定义的I/O流类对象 cin:istream 类的对象,处理标准输入设备的输入。cout:ostream 类的对象,处理标准输出设备的输出。cerr:ostream 类的对象,处理在标准输出设备上输出 错误信息(非缓冲)。clog:ostream 类的对象,处理

2、在标准输出设备上输出 错误信息(缓冲)。,5.重载的通用的流算符(提取运算符):输入,从流中获取数据到内存。(插入运算符):输出,将内存数据添加到流中输入。,10.1 C+I/O流概述,重要提示:“读”、“输入”、“提取”表示的是同样的含义,即把数据从外部设备传到计算机内存。“写”、“输出”、“插入”表示的是同样的含义,即把数据从计算机内存传到外部设备。,例“”(提取运算符)和“xy;coutx=x“y=”yn;,磁盘文件简介,输入流的起点和输出流的终点都可以是磁盘文件。,1)文本文件:文件中信息形式为ASCII码字符,每个字符占一 个字节。2)二进制文件:文件中信息的形式与其在内存中的形式相

3、同。,文件:C+把每个文件都看成是一个有序的字节序列,每个文件都以文件结束标志结束。例如:,按照文件中数据的组织形式可把文件分为:,文件的读写方式:,1)顺序方式:按数据在文件中的物理排列顺序依次读或写。2)随机方式:在文件的任何位置进行读或写。,磁盘文件简介,10.2 输出流,定义文件输出流对象 向一个磁盘文件输出前,需要定义一个ofstream类的对象(输出流对象)。方法主要有两种:,方法1:定义输出流类对象,调用open成员函数打开文件,例:ofstream outfile;/建立文件输出流类对象 outfile.open(“datal.txt”,ios:out);/使流对象与文件建立联

4、系(打开文件),方法2:在定义输出流类对象时打开相关联的文件,例:ofstream outfile(“datal.txt”,ios:out);,10.2 输出流,2.向输出流插入数据 1)使用输出流插入运算符(),例 coutx=3.52n;,流类库中重载的运算符返回了对其左操作对象的引 用,因此在一条语句中可以连续使用。,例1 使用插入运算符()向文本文件写入信息。,在对打开的文件的写操作完成后,应调用close()成员函数关闭该文件。,例2 把前100个质数写入文本文件。,任何不是质数的整数都可以被更小的质数整除。,10.2 输出流,2.向输出流插入数据 2)使用输出流类成员函数put()

5、输出字符。,例 cout.put(H).put(i).put(!)endl;,put()成员函数返回调用它的对象的引用,因此在一条 语句中可以连续调用put()成员函数。,10.2 输出流,2.向输出流插入数据 3)使用输出流类成员函数write()以原始数据形式输出。,例 char buffer=HAPPY BIRTHDAY;cout.write(buffer,5)endl;,write()成员函数返回调用它的对象的引用。,调用write()时,第一个实参必须是char类型的地址。,例2 使用put()和write()向文本文件写入信息。,例3 使用write()向二进制文件写入信息。,调用

6、write()时,第一个实参必须是char类型的地址。,10.3 输入流,定义文件输入流对象 从一个磁盘文件输入前,需要定义一个ifstream类的对象(输入流对象)。方法主要有两种:,方法1:先定义文件对象,然后调用open成员函数打开文件,例:ifstream infile;/建立文件输入流对象 infile.open(“datal.txt”,ios:in);/打开文件,使流对象与文件建立联系,方法1:在定义文件对象时打开相关联的文件,例:ifstream infile(“datal.txt”,ios:in);,10.3 输入流,2.从输入流提取数据 1)使用输入流提取运算符(),例 in

7、t x,y;cinxy;,空格符、回车符作为数据间的分割符。若遇到输入的数据类型有错或文件结束符时,提取工作将终止。,例1 使用提取运算符()从文本文件读信息。,例2 读取写在文本文件中100个质数,并将它们显示在屏幕上。,10.3 输入流,2.从输入流提取数据 2)使用输入流类成员函数get()读入一个字符。,例 char c;while(c=cin.get()!=EOF)cout.put(c);,不带参数的get()函数。从输入流中读取一个字符,并把该字符作为函数返回值,若遇文件结束符,返回EOF。,有一个参数的get()函数。下例中,从输入流中读取一个字符赋给c,若遇文件结束符,返回0,

8、否则返回非0。,例 char c;while(cin.get(c)cout.put(c);,10.3 输入流,2.从输入流提取数据 3)使用输入流类成员函数get()和getline()读入字符串。这两个函数的调用形式为:,从输入流读取n-1个字符(若遇终止字符提前结束),在其后加入0,存放在由字符地址指向的内存空间。终止字符的缺省值为n。它们的差别是:get()使终止字符保留在输入流中,而getline()把终止字符从输入流中删除。,输入流对象.get(字符地址,字符个数n,终止字符);输入流对象.getline(字符地址,字符个数n,终止字符);,例2 使用成员函数getline()从文本

9、文件读信息。,例3 使用成员函数getline()从文本文件读信息。,从输入流读数据时,若遇文件结束符,成员函数eof()函数值为非0,否则为0。,10.3 输入流,2.从输入流提取数据 4)使用输入流类成员函数read()以原始数据形式输入。,例 char buffer80;cin.read(buffer,20);,该函数主要用于对二进制文件的读取。,例4 读写二进制文件示例。,string流类(字符串流类),1.字符串流 以内存中用户定义的字符数组为输入、输出的对象,也称为内存流。,2.字符串流类(包含在 strstrea.h文件中)ostrstream、istrstream 和strst

10、ream,例 字符串流类使用示例。,12345 25.6 number=1.25,程序运行结果:,以随机方式读/写文件,对文件的读写受到一个定位指针的控制。读指针:从读指针当前所指位置读出数据,向后移动读指针使其指向下一个数据。写指针:把数据写到写指针当前所指位置,向后移动写指针,使其指向下一个写数据的位置。,利用C+流类中提供的成员函数,可改变读/写指针,从而实现对文件的随机读/写。,随机访问多用于二进制文件。,以随机方式读/写文件,操作写指针的成员函数 1)移动写指针。调用格式1:输出流对象名.seekp(流中位置);调用格式2:输出流对象名.seekp(偏移量,参照位置);取ios类中的

11、枚举量:beg(0)相对文件头;curr(1)相对文件当前位置;end(2)相对文件尾。2)返回写指针当前位置(相对于文件头的字节数)。调用格式:输出流对象名.tellp(),以随机方式读/写文件,操作读指针的成员函数 1)移动读指针。调用格式1:输入流对象名.seekg(流中位置);调用格式2:输入流对象名.seekg(偏移量,参照位置);取ios类中的枚举量:beg(0)相对文件头;curr(1)相对文件当前位置;end(2)相对文件尾。2)返回读指针当前位置(相对于文件头的字节数)。调用格式:输入流对象名.tellg(),例 文件的随机访问示例。把100个素数存入文件data.bin。从

12、文件data.bin中取出第n个素数并输出。,10.5 格式化输入输出,格式化输入输出是指控制文本模式I/O流的格式。例如,设置字段宽度、对齐方式、输出数字的精度等。C+提供两种进行格式化输入输出的方法:用ios类的成员函数设置格式 使用格式操纵算子 格式成员函数和格式操纵算子详细情况见书。,例:格式化输出成员函数使用示例。,01234567890123451234 123412341234*1234123.46,成员函数width()只对一个输出项有效。,运行结果:,0123456789012345*1234 1234*1234$12.346,运行结果:,例:操纵算子使用示例,10.6 异常

13、处理,1.异常 程序运行时出现的异常情况。例如,用new无法得到需要的空间、数组下标越界、运算结果溢出、除数为0等。,例 char*ps=new char256;if(ps=0)exit(1);,返回一个标志值。,例 int Setch(char s,int i,char x)if(istrlen(s)-1)return 0;else si=x;return 1;,2.处理异常的常用方法 终止程序的运行。,调用一个预先定义的异常处理程序。,10.6 异常处理,3.C+的异常处理机制 C+的异常处理机制包括:1)抛出异常 形式为:throw 表达式;2)try块(检测异常)形式为:try 可能抛出异常且需要检查的程序段 3)catch块(捕捉异常)形式为:catch(异常类型参数)处理异常程序段,例 除数为0的异常处理。,10.6 异常处理,4.标准异常 C+标准库中定义了一些异常类(在头文件stdexcept中),可以在编写的程序中使用这些类,报告异常情况。,5.几个标准异常类 1)out_of_range类:可表示数组下标越界。2)overflow_error类:可表示发生了运算上溢错误。3)underflow_error类:可表示发生了运算下溢错误。,每个标准异常类都有一个what()成员函数,用来返回描述异常的信息。,例 标准异常的使用示例。,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号