第8章C程序设计教程与实验指导杨国兴输入输出流-医学资料

上传人:杰猫 文档编号:119362469 上传时间:2020-01-13 格式:PPT 页数:47 大小:407.01KB
返回 下载 相关 举报
第8章C程序设计教程与实验指导杨国兴输入输出流-医学资料_第1页
第1页 / 共47页
第8章C程序设计教程与实验指导杨国兴输入输出流-医学资料_第2页
第2页 / 共47页
第8章C程序设计教程与实验指导杨国兴输入输出流-医学资料_第3页
第3页 / 共47页
第8章C程序设计教程与实验指导杨国兴输入输出流-医学资料_第4页
第4页 / 共47页
第8章C程序设计教程与实验指导杨国兴输入输出流-医学资料_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《第8章C程序设计教程与实验指导杨国兴输入输出流-医学资料》由会员分享,可在线阅读,更多相关《第8章C程序设计教程与实验指导杨国兴输入输出流-医学资料(47页珍藏版)》请在金锄头文库上搜索。

1、C+语言程序设计 杨国兴 张东玲 彭涛 中国水利水电出版社 第8章 输入/输出流 8.1 输入/输出流概述 8.2 插入运算符及提取运算符 8.3 格式化输入输出 8.4 文件的输入输出 8.5 输入输出文件流fstream 8.1 输入/输出流概述 8.1.1 流的概念 “流”是一种抽象的形态,指的是计算机里的数据从一个对象流 向另一个对象。这里数据流入和流出的对象通常是指计算机中的 屏幕、内存、文件等一些输入输出设备。数据的流动就是由I/O流 类来实现的。 如预定义流对象cin和cout实现的数据流动过程: C+中的I/O流负责建立程序与设备对象之间的连接,它像一 个桥梁,沟通了数据的产生

2、者和消费者,使他们之间产生数据的 流动 。 第8章 输入/输出流 内存 数据流 显示器 流对象cout 键盘 数据流 内存 流对象cin 8.1 输入/输出流概述 8.1.2 流类库的结构 第8章 输入/输出流 ostream ios istream iftream istrstreamistringstream oftream ostrstream ostringstream iostream fstreamstrstream stingstream 第8章 输入/输出流 类 名说 明包含头文件 抽象流基类 ios所有输入输出流类的基类ios 输入流类 istream通用输入流类和其他输入流

3、的基 类 iostream ifstream输入文件流类fstream 输出流类 ostream通用输出流类和其他输出流的基 类 iostream ofstream输出文件流类fstream 输入输出流类 ostream通用输入/输出流类和其他输入/输 出流类的基类 iostream fstream输入/输出文件流类fstream I/OI/O流类说明表流类说明表 8.1 输入/输出流概述 8.1.2 流类库的结构(续) 流类库中与文件输入输出相关的文件流类结构: 第8章 输入/输出流 ios istreamostream ifstreamofstreamiostream fstream 返

4、回 8.2 插入运算符与提取运算符 1. 插入运算符 插入运算符“”:通常用于插入数据到一个输出流对象中,流 对象再进一步将数据输出到它所关联的设备中。 如:cout “Hello World!” 插入运算符“”适用于任何输出流对象,如输出文件流 ofstream的对象等。“”右侧可以是任何标准数据类型的变量及常 量,也可以是字符串变量及常量。 如:cout i s 3.14 ”:通常用于从输入流对象中提取数据。 如: int i; char buf100; cin i ; cin buf ; 提取运算符“”适用于任何输入流对象,如输入文件流 ifstream的对象等。“”右侧可以是任意标准数

5、据类型的变量,也 可以是字符串变量。 注意:使用提取运算符“”提取数据时,以空白符(如空格 、回车、tab)作为数据的分割符,因此提取字符串数据时,不能 提取空白字符。 第8章 输入/输出流 返 回 8.3 格式化输入输出 C+中的I/O流可以完成输出/输入的格式化操作,如设置域宽 、设置精度及整数进制等。 设置输入输出格式的方法: 使用流操纵元,只需把流操纵元插入(提取)到输出流(输 入流)中即可对输出流(输入流)进行格式化,如setiosflags 、setw、setfill、setprecision、hex、oct等,使用流操纵元时 需在程序中包含头文件iomanip 通过流的成员函数,

6、即由流对象直接调用完成格式化,如setf 、unsetf、width、fill、precision等。使用流成员函数的优点是 在设置格式同时,可以返回以前的设置,便于恢复原来的设置 。 第8章 输入/输出流 8.3 格式化输入输出 8.3.1 输出宽度控制:setw和width 使用流操纵元setw和成员函数width可以控制当前域宽(即输 入/输出的字符数)。 注意: (1) 宽度的设置仅适用于下一个插入或读取的数据。 (2) 在输出流中控制域宽,如果输出数据的宽度比设置的域宽 小,将以默认右对齐方式输出数据,左边空位会用填充字符来填 充(填充字符默认是空格)。 (3) 如果输出数据的宽度比

7、设置的宽度大,数据不会被截断, 将输出所有位数。 第8章 输入/输出流 例8.1 使用setw操纵元控制域宽 # include # include using namespace std; void main( ) cout 123 endl; cout setw(5) 4.5 6.7 endl; 程序运行结果为:程序运行结果为: 123123 4.56.7 4.56.7 第8章 输入/输出流 域宽仅适用于下一个数据; 实际数据比设置的域宽小,将 右对齐,左补空格 例8.2 使用width成员函数控制域宽 # include using namespace std; void main( )

8、 char * str3 = “abc”, “abcde”, “abcdef”; for (int i = 0; i 3; i + ) cout.width(5); cout stri endl; 程序运行结果为:程序运行结果为: abcabc abcdeabcde abcdefabcdef 第8章 输入/输出流 8.3 格式化输入输出 8.3.2 填充字符控制:setfill和fill 在缺省情况下,如果域宽大于数据宽度时,填充多余 空间的字符是空格。如果要改变填充字符,可以使用流 操纵元setfill和成员函数fill。 注意:设置了填充字符后,将对程序后面的输出代码 产生永久影响,直到下

9、一次再改变填充字符为止。 第8章 输入/输出流 例8.3 使用setfill控制填充字符 # include # include using namespace std; void main( ) double values = 1.23, 15.16, 653.7, 4358.24; cout setfill(*) ; for ( int i = 0 ; i 4 ; i + ) cout setw(10) valuesi endl; 程序运行结果为:程序运行结果为: 123123 4.56.7 4.56.7 第8章 输入/输出流 此语句也可以改为: cout.fill(*); fill()成

10、员函数将返回设置前的填 充字符 8.3 格式化输入输出 8.3.3 输出精度控制:setprecision和precision 使用流操纵元setprecision以及成员函数precision可以 控制浮点数输出的精度。 注意:精度一旦设置,就可以用于以后所有输出的数 据,直到下次精度发生改变。 使用成员函数precision可以返回设置前的精度。 第8章 输入/输出流 例8.4 控制浮点数精度 # include # include using namespace std; void main( ) double value = 31.4142743; int Preprecision =

11、 cout.precision(4); cout value endl; cout setprecision( Preprecision ) value endl; 程序运行结果为:程序运行结果为: 31.4131.41 31.414331.4143 第8章 输入/输出流 通过precision成员函数设置精 度后,将以前精度值返回并保存 在变量Preprecision中。 注意:系统默认精度为6, 恢复原来的精度设置 8.3 格式化输入输出 8.3.3 输出精度控制(续) 所设置的精度值,在程序没有设置计数法情况下,表示浮点数 的有效数字的个数。若程序设置了计数法(ios:fixed或 io

12、s:scientific),则表示小数点后数字的个数。 ios:fixed 表示以定点法输出浮点数(不带指数)。 ios:scientific 表示以科学计数法输出浮点数。 第8章 输入/输出流 例8.4 (续一) # include # include using namespace std; void main( ) double value = 31.4142743; cout setiosflags( ios:fixed ); int Preprecision = cout.precision(4); cout value endl; cout setprecision( Prepre

13、cision ) value endl; 程序运行结果为:程序运行结果为: 31.414331.4143 31.41427431.414274 第8章 输入/输出流 设置计数法:以定点法 输出浮点数 例8.4 (续二) # include # include using namespace std; void main( ) double value = 31.4142743; cout setiosflags( ios:scientific ); int Preprecision = cout.precision(4); cout value endl; cout setprecision(

14、 Preprecision ) value endl; 程序运行结果为:程序运行结果为: 3.1414e+0013.1414e+001 3.141427e+0013.141427e+001 第8章 输入/输出流 设置计数法:以科学计 数法输出浮点数 8.3 格式化输入输出 8.3.4 其他格式状态 上例中的setiosflags也是一个流操纵元,定义在头文件 中。 通过将setiosflags的参数设置为各种不同流格式状态标志值,可 以对相应的输入输出格式进行控制。 若需要同时设置多个标志位时,可以使用按位或运算符(|)将 不同的标志项结合。 第8章 输入/输出流 第8章 输入/输出流 流格式状态标态标 志说说 明 ios : skipws ios : left ios : right ios : internal ios : dec ios : oct ios : hex ios : showbase ios : showpoint ios : uppercas

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

当前位置:首页 > 医学/心理学 > 基础医学

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