第11章C++输入输出流ppt课件.ppt





《第11章C++输入输出流ppt课件.ppt》由会员分享,可在线阅读,更多相关《第11章C++输入输出流ppt课件.ppt(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确C+语言程序设计在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确第11章输入/输出流11.1输入/输出流概述11.2插入运算符及提取运算符11.3格式化输入输出11.4文件的输入输出11.5输入输出文件流fstream在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确11.1 输入/输出流概述11.1.1流的概念“流”是一种抽象的形态,指的是计算机里的数据从一个对象流向另
2、一个对象。这里数据流入和流出的对象通常是指计算机中的屏幕、内存、文件等一些输入输出设备。数据的流动就是由I/O流类来实现的。如预定义流对象cin和cout实现的数据流动过程:C+中的I/O流负责建立程序与设备对象之间的连接,它像一个桥梁,沟通了数据的产生者和消费者,使他们之间产生数据的流动。内存内存数据流显示器显示器流对象流对象cout键盘键盘数据流内存内存流对象流对象cin在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确11.1 输入/输出流概述11.1.2流类库的结构streambuffilebufstrstreambufstdi
3、obufostreamiosistreamiftream istrstream istream_withassignoftream ostrstream ostream_withassign iostreamfstreamstrstream stdiostreamIostream_init在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确类名说明包含头文件抽象流基类ios所有输入输出流类的基类ios.h输入流类istream通用输入流类和其他输入流的基类 iostream.hifstream输入文件流类fstream.histrstre
4、am输入字符串流类strstrea.histream_withassign cin的输入流类iostream.h输出流类ostream通用输出流类和其他输出流的基类iostream.hofstream输出文件流类fstream.hostrstream输出字符串流类strstrea.hostream_withassigncout、cerr、clog的输出流类iostream.hI/O流类说明表在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确输入输出流类iostream通用输入/输出流类和其他输入/输出流类的基类iostream.hfst
5、ream输入/输出文件流类fstream.hstrstream输入/输出字符串流类strstrea.hstdiostream标准I/O文件的输入输出类stdiostr.h流缓冲区类streambuf抽象流缓冲区基类iostream.hfilebuf磁盘文件的流缓冲区类fstream.hstrstreambuf字符串的流缓冲区类strstrea.hstdiobuf标准I/O文件的流缓冲区类stdiostr.h预先定义的流初始化类Iostream_init初始化预定义流对象的类iostream.hI/O流类说明表(续)在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由
6、浅入深,所提出的问题也很明确11.1 输入/输出流概述11.1.2流类库的结构(续)流类库中与文件输入输出相关的文件流类结构:iosistreamostreamifstreamofstreamiostreamfstream在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确11.2 插入运算符与提取运算符1.插入运算符插入运算符“”:通常用于插入数据到一个输出流对象中,流对象再进一步将数据输出到它所关联的设备中。如:cout“HelloWorld!”插入运算符“”适用于任何输出流对象,如输出文件流ofstream的对象等。“”右侧可以是任
7、何标准数据类型的变量及常量,也可以是字符串变量及常量。如:coutis3.14”:通常用于从输入流对象中提取数据。如:inti;charbuf100;cini;cinbuf;提取运算符“”适用于任何输入流对象,如输入文件流ifstream的对象等。“”右侧可以是任意标准数据类型的变量,也可以是字符串变量。注意:使用提取运算符“”提取数据时,以空白符(如空格、回车、tab)作为数据的分割符,因此提取字符串数据时,不能提取空白字符。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确11.3 格式化输入输出C+中的I/O流可以完成输出/输入的
8、格式化操作,如设置域宽、设置精度及整数进制等。设置输入输出格式的方法:使用流操纵元,只需把流操纵元插入(提取)到输出流(输入流)中即可对输出流(输入流)进行格式化,如setiosflags、setw、setfill、setprecision、hex、oct等,使用流操纵元时需在程序中包含头文件iomanip.h通过流的成员函数,即由流对象直接调用完成格式化,如setf、unsetf、width、fill、precision等。使用流成员函数的优点是在设置格式同时,可以返回以前的设置,便于恢复原来的设置。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提
9、出的问题也很明确11.3 格式化输入输出11.3.1输出宽度控制:setw和width使用流操纵元setw和成员函数width可以控制当前域宽(即输入/输出的字符数)。注意:(1)宽度的设置仅适用于下一个插入或读取的数据。(2)在输出流中控制域宽,如果输出数据的宽度比设置的域宽小,将以默认右对齐方式输出数据,左边空位会用填充字符来填充(填充字符默认是空格)。(3)如果输出数据的宽度比设置的宽度大,数据不会被截断,将输出所有位数。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确例11.1使用setw操纵元控制域宽#include#inc
10、ludevoidmain()cout123endl;coutsetw(5)4.56.7endl;程序运行结果为:1234.56.7域宽仅适用于下一个数据;域宽仅适用于下一个数据;实际数据比设置的域宽小,将实际数据比设置的域宽小,将右对齐,左补空格右对齐,左补空格在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确例11.2使用width成员函数控制域宽#includevoidmain()char*str3=“abc”,“abcde”,“abcdef”;for(inti=0;i3;i+)cout.width(5);coutstriendl;
11、程序运行结果为:程序运行结果为:abcabcabcdeabcdeabcdefabcdef在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确11.3 格式化输入输出11.3.2填充字符控制:setfill和fill在缺省情况下,如果域宽大于数据宽度时,填充多余空间的字符是空格。如果要改变填充字符,可以使用流操纵元setfill和成员函数fill。注意:设置了填充字符后,将对程序后面的输出代码产生永久影响,直到下一次再改变填充字符为止。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明
12、确例11.3使用setfill控制填充字符#include#includevoidmain()doublevalues=1.23,15.16,653.7,4358.24;coutsetfill(*);for(inti=0;i4;i+)coutsetw(10)valuesiendl;程序运行结果为:*1.23*15.16*653.7*4358.24此语句也可以改为:此语句也可以改为:cout.fill(*);fill()成员函数将返回设置前的填成员函数将返回设置前的填充字符充字符在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确11.3
13、格式化输入输出11.3.3输出精度控制:setprecision和precision使 用 流 操 纵 元 setprecision以 及 成 员 函 数precision可以控制浮点数输出的精度。注意:精度一旦设置,就可以用于以后所有输出的数据,直到下次精度发生改变。使用成员函数precision可以返回设置前的精度。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确例11.4控制浮点数精度#include#includevoidmain()doublevalue=31.4142743;intPreprecision=cout.pre
14、cision(4);coutvalueendl;coutsetprecision(Preprecision)valueendl;程序运行结果为:31.4131.4143通过precision成员函数设置精度后,将以前精度值返回并保存在变量Preprecision中。注意:系统默认精度为6,恢复原来的精度设置恢复原来的精度设置在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确11.3 格式化输入输出11.3.3输出精度控制所设置的精度值,在程序没有设置计数法情况下,表示浮点数的 有 效 数 字 的 个 数。若 程 序 设 置 了 计 数
15、法(ios:fixed或ios:scientific),则表示小数点后数字的个数。ios:fixed表示以定点法输出浮点数(不带指数)。ios:scientific表示以科学计数法输出浮点数。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确例11.4控制浮点数精度(加入设置计数法)#include#includevoidmain()doublevalue=31.4142743;coutsetiosflags(ios:fixed);intPreprecision=cout.precision(4);coutvalueendl;couts
16、etprecision(Preprecision)valueendl;程序运行结果为:31.414331.414274设置计数法:以定点法设置计数法:以定点法输出浮点数输出浮点数在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确例11.4(续)#include#includevoidmain()doublevalue=31.4142743;coutsetiosflags(ios:scientific);intPreprecision=cout.precision(4);coutvalueendl;coutsetprecision(Pre
17、precision)valueendl;程序运行结果为:3.1414e+0013.141427e+001设置计数法:以科学计设置计数法:以科学计数法输出浮点数数法输出浮点数在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确11.3 格式化输入输出11.3.4其他格式状态上 例 中 的 setiosflags也 是 一 个 流 操 纵 元,定 义 在 头 文 件中。通过将setiosflags的参数设置为各种不同流格式状态标志值,可以对相应的输入输出格式进行控制。若需要同时设置多个标志位时,可以使用按位或运算符(|)将不同的标志项结合。在
18、整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确流格式状态标志说明ios:skipwsios:leftios:rightios:internalios:decios:octios:hexios:showbaseios:showpointios:uppercaseios:showposios:scientificios:fixed跳过输入流的空白字符在输出域中左对齐输出,必要时,在右边填充字符在输出域中右对齐输出,必要时,在左边填充字符(默认)在输出域中左对齐数值的符号及进制符号,右对齐数字值以十进制形式格式化指定整数(默认)以八进制形式
19、格式化指定整数以十六进制形式格式化指定整数在数值前输出进制(0表示八进制,0 x或0X表示十六进制)输出浮点数时显示小数点和尾部的0输出十六进制数时显示大写字母AF,科学计数法显示大写E输出正数时前面加正号(+)以科学计数法显示浮点数以定点表示法显示浮点数I/O流格式状态标志 在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确例11.5使用setiosflags控制流格式#include#includevoidmain()intx=200;coutsetiosflags(ios:internal|ios:showpos);coutset
20、w(10)xendl;coutsetiosflags(ios:hex|ios:uppercase|ios:showbase);coutsetw(10)xendl;coutoctsetw(10)xendl;将oct直接插入流中,也可使用:setiosflags(ios:oct)程序运行结果为:程序运行结果为:+200+2000XC80XC803100310在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确11.3 格式化输入输出11.3.4其他格式状态(续)使用流操纵元setiosflags设置相应的标志位后,对流对象产生的影响是持久的,
21、若想恢复以前的默认设置,可以通过resetiosflags流操纵元关闭相应的标志位。如:coutresetiosflags(ios:internal|ios:showbase);可以取消对域中对齐格式的设置,同时取消显示数制标志,恢复系统默认格式。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确11.4 文件的输入输出处理文件输入输出的流类主要有ofstream、ifstream和fstream三个类。均定义在fstream.h中。向文件输出数据即将数据保存到文件中时,要使用ofstream类;从文件中读取数据即从文件中输入数据时,要
22、使用ifstream类。而使用fstream类可以同时进行输入及输出操作。文件输入输出的一般步骤为:创建流对象并打开文件读写文件关闭文件在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确11.4 文件的输入输出11.4.1打开文件1.使用默认构造函数,然后调用使用默认构造函数,然后调用open函数函数用法如下:文件I/O流类名流对象名;/声明一个流对象流对象名.open(文件名,打开方式);/调用open函数打开文件如:ofstreammy_file;my_file.open(“boot.ini”,ios:out);参数“文件名”:用于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 11 C+ 输入输出 ppt 课件

限制150内