C程序的设计简明教程第9章C输入输出流

上传人:痛*** 文档编号:190388366 上传时间:2023-02-27 格式:PPT 页数:37 大小:314.50KB
收藏 版权申诉 举报 下载
C程序的设计简明教程第9章C输入输出流_第1页
第1页 / 共37页
C程序的设计简明教程第9章C输入输出流_第2页
第2页 / 共37页
C程序的设计简明教程第9章C输入输出流_第3页
第3页 / 共37页
资源描述:

《C程序的设计简明教程第9章C输入输出流》由会员分享,可在线阅读,更多相关《C程序的设计简明教程第9章C输入输出流(37页珍藏版)》请在装配图网上搜索。

1、第9章 C+的输入/输出流 9.1 概述 9.2 输出流 9.3 输入流 9.4 格式控制 9.5 文件的输入输出 9.1 概述C+用流stream的概念描述数据的输入输出,流是计算机中的数据从源头移动到目的地的这种过程的抽象。流具有很强的方向性,与输入设备相联系的流称为输入流,与输出设备相联系的流称为输出流,与输入输出设备相联系的流称为输入输出流。流操作对流的基本操作有两种,从流中获得数据称为提取操作,向流中添加数据称为插入操作。C+语言用流对象来管理流,流对象一般都与某种设备相联系,程序员通过操纵流对象,达到控制输入输出的目的。输入输出流类输入输出流类负责把计算机的各种输入输出设备,变成流

2、的源头和目的地,能被源源不断地提取和插入数据。streambuf类和ios类分别是两个类族的顶层基类,其它流类都是由这两个类中的一个派生而来。标准流对象为便于程序员在程序中实现常用的输入输出功能,C+定义了4个标准的流对象,分别是cin、cout、cerr和clog。cin对象负责标准输入,即从键盘输入数据;cout对象负责标准输出,即向显示器输出数据。cerr对象和clog对象负责标准错误输出,其中cerr对象无缓冲区而clog对象则有。用于流提取的运算符是,用于流插入的运算符是,它们均从移位运算符重载而来。9.2 输出流ostream类提供了数据流输出的功能,其流对象是流的目的地。在程序里

3、可以将数据不断地插入流中,送至这些ostream流对象。输出时使用的ostream流对象通常是cout,有3种基本操作方式。第1种是用流插入运算符,输出基本类型的数据;第2种是用成员函数put,输出一个字符;第3种是用成员函数write,输出一个字符串。流插入运算符 cout表达式1表达式n;int x=1,y=2;float z=3.4;char c=a;coutx”,”y”,”z”,”cendl;coutx+yy)endl;成员函数put ostream&put(char c);char c=a;cout.put(c);/输出c的值即字母acout.put(c).put(b).put(Q)

4、;成员函数write ostream&write(const char*s,int n);char*p=”C+”,a20=”language”;cout.write(p,3);cout.write(a,strlen(a);/输出数组a中的字符串 coutendl;cout.write(p.strlen(p).write(a,strlen(a);cout变量1变量2变量n;使用流提取运算符输入多个数据时,应该用空格符或者回车符进行分隔。默认情况下,系统会自动跳过输入流中的空格符、tab符以及回车符等空白字符。成员函数get int get(void);istream&get(char&c);is

5、tream&get(char*s,int n,char ch=n);char c1,c2,a80;c1=cin.get();cin.get(c2);cin.get(a,21,#);成员函数getline istream&getline(char*s,int n,char ch=n);char a80;cin.getline(a,21,#);读取控制成员函数函数原型说明int gcount(void)const统计最近一次实际读取的字符个数istream&ignore(int n=1,int d=EOF)跳过并丢弃n个字符,直到遇见d中的字符为止istream&putback(char ch)将

6、指定字符插入到输入流的当前位置int peek(void)读取输入流中当前字符成员函数read istream&read(char*s,int n);read函数的功能是从输入流中顺序读取n个字符,并存入到s所指向的字符数组中。它与get函数、getline函数的区别是,不在读取的这些字符的尾部添加一个空字符(0)。9.4 格式控制在实践应用中经常需要对输入输出的格式进行控制,例如设置域宽和精度、设置或者清除格式状态标志、设置填充字符、设置数据对齐方式,以及在输出流中插入空字符或者换行符等等。C+提供了两种用于格式控制的方法,一种是调用ios类的格式控制成员函数,另一种是使用流操纵符。格式控制

7、成员函数 函数原型 说明int width(void)读取当前设置的域宽 int width(int n)设置当前域宽为n,并返回原先设置的域宽int precision(void)读取当前设置的浮点数精度int precision(int n)设置当前浮点数的精度为n,并返回原先设置的浮点数精度char fill(void)读取当前设置的填充字符char fill(char ch)设置当前填充字符为ch,并返回原先设置的填充字符long flags(void)读取当前设置的格式状态标志long flags(long f)设置当前格式状态标志为f,并返回原先设置的格式状态标志long setf

8、(long f)设置当前格式状态标志为f,并返回原先设置的格式状态标志long unsetf(long f)清除格式状态标志f,并返回原先设置的格式状态标志案例#include int main()int i;for(i=1;i=4;i+)cout.width(4-i);cout.fill();if(cout.width()!=0)cout;cout.width(2*i-1);cout.fill(*);cout*endl;return(0);格式状态标志 ios:adjustfield标志组 ios:left 输出时左对齐 ios:right 输出时右对齐 ios:internal 符号和基数

9、标志左对齐,数值右对齐,中间用字符填充ios:basefield标志组 ios:dec 以十进制为基数输出ios:oct 以八进制为基数输出ios:hex 以十六进制为基数输出ios:floatfield标志组 ios:fixed 以定点形式输出浮点数ios:scientific 以指数形式输出浮点数其它标志 ios:skipws 输入时跳过空白符ios:showbase 输出时带有基数标志,八进制数有前导0,十六进制数有前导0 xios:showpoint 输出浮点数时带有小数点ios:showpos 输出十进制正数时有前导+ios:uppercase 将十六进制数和以指数形式表示的数中的字

10、母转换为大写形式ios:boolalpha 以文本的形式输出布尔数据true、false)成员函数flags long oldf;oldf=cout.flags(ios:left|ios:hex);/*设置输出左对齐和以十六进制为基数的标志*/cout.flags(oldf);/恢复原先的状态设置setf函数setf函数和unsetf函数通常配合使用,用来完成格式状态标志的设置和清除。cout.setf(ios:left);/设置输出左对齐标志 cout.unsetf(ios:left);/清除左对齐标志操纵符 操纵符manipulator又称为流操作算子,是一种特殊的函数。由于操纵符返回流对

11、象的引用,因此可以连续地使用,并直接插入到流中,较为方便地控制流中数据的输入输出格式。案例#include#include int main()int i;for(i=1;i=4;i+)coutsetw(4-i)setfill();if(cout.width()!=0)cout;coutsetw(2*i-1)setfill(*)*endl;return(0);自定义操纵符 ostream&pxy(ostream&out)out.flags(ios:left);outsetw(3);return(out);coutx=pxyp.xy=pxyp.y;9.5 文件的输入输出C+提供文件流类来处理文件

12、的输入输出,分别是ifstream类、ofstream类和fstream类。文件流对象控制输入输出的方式,与cin对象和cout对象非常相似,而且已经学过的输入输出成员函数、格式控制成员函数以及操纵符,基本上都可以适用于文件流对象。文件打开与关闭文件打开与关闭 对文件能够进行哪些操作,这主要取决于两个因素。第一个因素是文件所关联的文件流对象,ofstream流对象能够进行文件输出操作即写操作),ifstream流对象能够进行文件输入操作即读操作),fstream流对象既能够进行文件输出操作,也能够进行文件输入操作。打开方式 打开方式 说明ios:in以读方式打开文件ios:out以写方式打开文

13、件ios:app在文件尾部追加写入ios:ate打开一个已存在的文件,并将位置指针置于该文件的结尾ios:nocreate打开一个已存在的文件,若该文件不存在,则打开失败ios:noreplace打开文件时若该文件已存在,而且未设置app或者ate,则打开失败ios:binary以二进制方式打开文件ios:trunc 打开文件时若已存在,清空原有内容;若文件不存在,则创建新文件文件打开1C+文件打开的方法有两种,第一种是在创建文件流对象的同时,立即打开相关联的文件。具体实现过程就是向文件流对象的构造函数,传送文件名和打开方式等参数。istream file1(“a.txt”,ios:in);o

14、stream file2(“b.txt”,ios:out|ios:binary);文件打开2第二种方法是先创建文件流对象,再调用成员函数open,并传给它文件名和打开方式等参数,打开相关联的文件。istream file1;file1.open(“a.txt”,ios:in);ostream file2;file2.open(“b.txt”,ios:out|ios:binary);文件打开测试 istream file1;file1.open(“a.txt”,ios:in);if(!file1)cerr”文件打开失败!”endl;文件的顺序读写文件的顺序读写 所谓顺序读写,就是文件打开之后从头

15、开始,顺序地读写文件中的数据。以文件流对象的形式来处理文件的输入输出是非常便利的,文件流对象与文件建立关联之后,就可以象cin和cout那样控制数据流,前面介绍的几种输入输出方法都可以用来实现文件的读写操作。文件的定位和状态检测文件的定位和状态检测 成员函数tellg和tellp用于得到文件位置指针的当前位置,其函数原型为:long tellg(void);long tellp(void);重新定位成员函数seekg用于重新定位输入流文件位置指针的当前位置,其函数原型为:istream&seekg(long pos);istream&seekg(long offset,ios:seek_dir rpos);文件流输入输出状态标志 输入输出状态标志 说明 ios:goodbit文件流状态良好,其它3个标志都不为trueios:eofbit文件位置指针已到达文件的尾部ios:failbit文件操作失败ios:badbit由于内存不足等原因,出现不可恢复的错误

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!