第8章 C++ 流标准库

上传人:qiuji****ngye 文档编号:46066673 上传时间:2018-06-21 格式:PPT 页数:42 大小:240.50KB
返回 下载 相关 举报
第8章 C++ 流标准库_第1页
第1页 / 共42页
第8章 C++ 流标准库_第2页
第2页 / 共42页
第8章 C++ 流标准库_第3页
第3页 / 共42页
第8章 C++ 流标准库_第4页
第4页 / 共42页
第8章 C++ 流标准库_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《第8章 C++ 流标准库》由会员分享,可在线阅读,更多相关《第8章 C++ 流标准库(42页珍藏版)》请在金锄头文库上搜索。

1、第二部分 C+面向对象程序设计第八章第八章 C+ I/O流标准库流标准库本章课件制作:胡敏本章内容 C+ I/O流概述 输出流 输入流 格式化输入输出8.1 C+ I/O流概述在C+语言中没有定义专门的输入输出(I/O) 语句。输入输出操作是通过I/O流实现的。在 C+编译系统中带有一个面向对象的I/O软件包, 这就是I/O流类库。“流”(stream)实际上是一个字节序列,是是 指数据从一个位置流向另一个位置的抽象。指数据从一个位置流向另一个位置的抽象。在 C+程序中,数据可以从键盘键盘或外部文件流入外部文件流入到 程序的数据结构中数据结构中(输入),也可从程序中流向屏程序中流向屏 幕或外部

2、文件幕或外部文件(输出)。通常把从流中获取数据从流中获取数据的 操作(读操作)称为提取操作提取操作,而向流中添加数据向流中添加数据 的的操作(写操作)称为插入操作插入操作。 8.1 C+ I/O流概述在C+语言中没有定义专门的输入输出(I/O) 语句。输入输出操作是通过I/O流实现的。在 C+编译系统中带有一个面向对象的I/O软件包, 这就是I/O流类库。流实际上是一个字节序列,是指数据从一个是指数据从一个 位置流向另一个位置的抽象。位置流向另一个位置的抽象。在C+程序中,数 据可以从键盘键盘或外部文件流入外部文件流入到程序的数据结构数据结构 中中(输入),也可从程序中流向屏幕或外部文件程序中

3、流向屏幕或外部文件(输 出)。通常把从流中获取数据从流中获取数据的操作(读操作)称为 提取操作提取操作,而向流中添加数据的向流中添加数据的操作(写操作)称 为插入操作插入操作。 1. C+I/O流的结构其中,streambuf是一个抽象类。filebuf是文件缓冲类, 用以实现文件的打开、读入、写出和关闭等操作。 strstreambuf是字符串缓冲类,它支持在内存中进行提取 和插入操作。conbuf是控制台缓冲类,它支持对屏幕的输 出处理。流缓冲区类的结构Streambuffilebufstrstreambufconbuf8.1 C+ I/O流概述1. C+I/O流的结构输入输出流类的结构8

4、.1 C+ I/O流概述ios istreamostreamfstreambasestrstreambaseiostreamifstreamofstreamfstreamistrstreamostrstreamstrstreamistreamifstreamistreamifstream8.1 C+ I/O流概述 ios是一个虚基类,它提供了一些对数据流进行设提供了一些对数据流进行设 置的功能置的功能; ostream、ofstream和ostrstream是向流中插入数 据的操作类; istream、ifstream和istrstream从流中提取数据的 操作类; iostream、fstr

5、eam和strstream是流中数据的综合 操作类(插入和提取); fstreambase和strstreambase分别是文件和字符流 类的公共基类。I/O流类列表 类类 名名 说说 明明 包含文件包含文件 ios 流的抽象基类 iostream.h istream 通用输入流类和其他输入流的基类 iostream.hifstream输入文件流类 fstream.h ofstream 输出文件流类 fstream.h iostream 通用输入/输出流类和其他输入/输出流的基类 iostream.h fstream 输入/输出文件流类 fstream.h 8.1 C+ I/O流概述C+流类中

6、已预定义了四个对象: cin是istream类的对象,用于处理标准输入设用于处理标准输入设 备备( (键盘键盘) )的输入的输入; ; cout是ostream类的对象,用于处理标准输出设备用于处理标准输出设备( ( 屏幕屏幕) )的输出的输出; ; cerr是ostream类的对象,用于处理在标准设备上用于处理在标准设备上 输出出错信息输出出错信息( (不带缓冲,即立即显示不带缓冲,即立即显示); ); clog是ostream类的对象,用于处理在标准输出设用于处理在标准输出设 备上输出错误信息备上输出错误信息( (带缓冲带缓冲) ),当缓冲区满时输出。,当缓冲区满时输出。8.1 C+ I/

7、O流概述流插入和提取运算符流插入和提取运算符 提取运算符表示读取数据到计算机内存中(输入)这两个运算符不仅可以和cincoutcerr和clog 这些预定义标准流对象一起使用,而且还可以和用户 定义的磁盘文件流对象一起使用同时,用户还可以重 载这些运算符 8.1 C+ I/O流概述 C+通过流进行输入输出的过程流进行输入输出的过程键盘键盘cincin计算机计算机( (指定的变量指定的变量) )“Hello ”输入流对象提提取coutcout插入输出流对象程序“HelloHello ”显示器8.1 C+ I/O流概述stringstring流类流类C+C+的的I/OI/O流类库中提供了在内存处理

8、字符串流的三流类库中提供了在内存处理字符串流的三 个类:个类:ostrstreamostrstream、istrstreamistrstream和和strstreamstrstream。istrstreamistrstream类类 用于执行字符串流的输入操作,用来用于执行字符串流的输入操作,用来 将存放的字符串转换为变量所需的内部格式。将存放的字符串转换为变量所需的内部格式。 该类的两个常用的构造函数的说明为:该类的两个常用的构造函数的说明为:istrstream(charistrstream(char * *strstr) );istrstream(charistrstream(char *

9、 *str,intstr,int n) n);例: 从一个输入字符串流对象输入示例。从一个输入字符串流对象输入示例。程序说明:本例演示了 istrstream对象从内存中的字符串(存 放在字符数组中或 由字符指针指向) 输入数据给程序中 的变量的功能8.1 C+ I/O流概述ostrstreamostrstream 类类ostrstreamostrstream类用来执行字符串流的输出操作,用来将类用来执行字符串流的输出操作,用来将 不同类型的数据格式化为字符串,并存放在一个字不同类型的数据格式化为字符串,并存放在一个字 符数组中。下面是该类两个常用构造函数的说明:符数组中。下面是该类两个常用构

10、造函数的说明:ostrstreamostrstream()();ostrstream(constostrstream(const char *s, char *s, intint size size,intint mode=mode=ios:outios:out) );例:具有指定长度的字符串数组的输出字符串流具有指定长度的字符串数组的输出字符串流 类对象的使用示例。类对象的使用示例。程序说明:程序中用到的函数 char str()是 ostrstream类提供的成员函数:功能是:返回标识存放字符串的数组 的地址值的函数。例:动态分配的输出字符串流对象使用示例。动态分配的输出字符串流对象使用示

11、例。程序说明:本例程序中,使用的 全部是C+风格的包含文件。注意输出字符串流对象的定义语句 “ostringstream outputString;”中的类名必须为 ostringstream,而且包含文件名必须为 sstream。文件的概念 文件 存储在外部设备上的数据的集合。它可以使数据得以长期保存。 C+程序中处理的数据文件按数据组织形式可分为: ASCII文件(文本文件)文件中信息形式为ASCII码字符,每个字符占一个字节 。数字3.14159存储时占7个字节. 二进制文件(内部格式文件)把内存中的数据按其在内存中的存储形原样输出到磁 盘上。数值数据按二进制方式存储,字符仍按ASCII

12、方式存储 。数字3.14159存储时占4个字节.文件操作前面,我们讨论的输入输出都是以键 盘为输入设备,显示器为输出设备。在 实际应用中,常以磁盘文件作为输入/输 出的对象。 输入(读文件) 从磁盘文件读取数据 输出(写文件) 将数据输出到磁盘文件。读、写文件的示意图标准C+库中包含了 对文件进行输入输出 的C风格的函数和C+ 风格的类库,使用它 们可在程序中完成对 文件的读、写。下面仅介绍C+风格 的类库的使用8.2 输出流C+输出流类输出流类主要是ostream和ofstream ostreamostream类最适合顺序文本的输出顺序文本的输出,通常使用coutcout cerrcerr或

13、clogclog这些预定义的对象预定义的对象实现输出操作 ofstreamofstream类还支持磁盘文件的输出磁盘文件的输出C+中,磁盘文磁盘文 件被看做一个字节序列件被看做一个字节序列要处理磁盘文件,就需要定义文件输出流对象定义文件输出流对象 8.2 输出流 定义文件输出流对象定义文件输出流对象方法方法1 1:先定义文件对象先定义文件对象, ,然后调用然后调用openopen成员函数打开成员函数打开 该文件该文件 ofstreamofstream outfileoutfile; ;/建立文件输出流对象建立文件输出流对象 outfile.open(“datal.txt”,ios:outout

14、file.open(“datal.txt”,ios:out);); /打开打开 文件文件, ,使流对象与使流对象与 文件文件 “datal.txtdatal.txt”关关 联联方法方法2: 2: 在定义文件输出流对象时初始化在定义文件输出流对象时初始化打开文件ofstreamofstream outfile(“dataloutfile(“datal txt“,ios:outtxt“,ios:out|);|);输出流常用成员函数 putput函数函数 输出流对象名.put(char ch) 该函数仅输出一个字符,且返回当前输出流对象例如: cout.put(A).put(t); 输出结果为:At

15、 writewrite函数函数输出流对象名.write(char *s,int n) 该函数输出字符指针所指向的字符串中的n个字符当s所指 字符串不足n时补空格, 函数返回当前输出流对象例如: cout.write(“12345“,3).write(“ABCDE“,7).put(t); 输出结果为:123ABCDE t 输出流常用成员函数 seekpseekp函数函数输出流对象名.seekp(流中位置) 输出流对象名.seekp(偏移量,参照位置) 其中,流中位置偏移量均为long型,以字节为单位 参照位置有三种: beg(0)表示相对于流的开始位置 cur(1)表示相对于当前写指针所指向的位置 end(2)表示相对于流的结尾处seekp函数是设置文件输出流写指针位置用的,指 出下次写出数据的起始位置利用该指针可实现向磁盘 文件随机输出它们均返回当前输出流对象 输出流常用成员函数 tellptellp函数函数 输出流对象名.tellp() 该函数返回当前输出流写指针的位置值 closeclose函数函数 在C+中,对磁盘文件操作后均需关闭该函数的用法是: 输出流对象名.close() 该函数既无参数,也无返回值当程序正常结束时不用此 函数也可以完成同样

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号