【免费下载】第9章 输入输出流
第14讲输入输出流

13.2.2 格式输出
在输出数据时,有时希望数据按指定的格式输出。有两 种方法可以达到此目的。一种是第3章已介绍过的使用 控制符的方法;第2种是使用流对象的有关成员函数。 1. 使用控制符控制输出格式 输出数据的控制符见书中P337。 应当注意,这些控制符是在头文件iomanip中定义的, 因而程序中应当包含iomanip。
13.1.3 C++的输入输出流
C++的输入输出流是指由若干字节组成的字节序列,这些 字节中的数据按顺序从一个对象传送到另一对象。流表示了 信息从源到目的端的流动。 在输入操作时,字节流从输入设备(如键盘、磁盘)流向内存, 在输出操作时,字节流从内存流向输出设备(如屏幕、打印机、 磁盘等)。 流中的内容可以是ASCII字符、二进制形式的数据、图形图 像、数字音频视频或其他形式的信息。 在内存中为每一个数据流开辟一个内存缓冲区,用来存放 流中的数据。流是与内存缓冲区相对应的,或者说,缓冲区 中的数据就是流。
cout<<″x2=″<<(-b-sqrt(disc))/(2*a)<<endl; } return 0; }
运行情况如下:
① please input a,b,c: 0 2 3↙ a is equal to zero,error! ② please input a,b,c: 5 2 3↙ sc=b*b-4*a*c<0 ③please input a,b,c: 1 2.5 1.5↙ x1=-1 x2=-1.5
在C++的输入输出中,编译系统对数据类型进行严格的检 查,凡是类型不正确的数据都不可能通过编译。因此C++ 的I/O操作是类型安全(type safe)的。 C++的I/O操作是可扩展的,不仅可以用来输入输出标准 类型的数据,也可以用于用户自定义类型的数据。C++对 标准类型的数据和对用户声明类型数据的输入输出,采用 同样的方法处理。 C++通过I/O类库来实现丰富的I/O功能。C++的输入输出 优于C语言中的printf和scanf,但是比较复杂,要掌握许 多细节。
《C++程序设计》电子教案第10章 流类库与输入输出

C++中所有流都是相同的 , 但文件可以不同 。 中所有流都是相同的, 但文件可以不同。 中所有流都是相同的 使用流以后, 使用流以后 , 程序用流统一对各种计算机设备 和文件进行操作,使程序与设备、 和文件进行操作 , 使程序与设备 、 程序与文件 无关,从而提高了程序设计的通用性和灵活性。 无关 , 从而提高了程序设计的通用性和灵活性 。 也就是说, 也就是说 , 无论与流相联系的实际物理设备差 别有多大,流都采用相同的方式运行。 别有多大 , 流都采用相同的方式运行 。 这种机 制使得流可以跨越物理设备平台, 制使得流可以跨越物理设备平台 , 实现流的透 明运作,而与实际的物理设备无关。例如, 明运作 , 而与实际的物理设备无关 。 例如 , 往 显示器上输出字符和向磁盘文件或打印机输出 字符,尽管接受输出的物理设备不同, 字符 , 尽管接受输出的物理设备不同 , 但具体 操作过程是相同的。 操作过程是相同的。
返回本节
10.2 格式化 格式化I/O
10.2.1 10.2.2 10.2.3 10.2.4 ios类中的枚举常量 类中的枚举常量 使用ios成员函数 使用 成员函数 使用I/O操作符 使用 操作符 检测流操作的错误
返回首页
10.2.1 ios类中的枚举常量 类中的枚举常量
在根基类ios中定义有三个用户需要使用的枚举类型, 在根基类 中定义有三个用户需要使用的枚举类型,由 中定义有三个用户需要使用的枚举类型 于它们是在公用成员部分定义的, 于它们是在公用成员部分定义的,所以其中的每个枚举类 型常量在加上ios::前缀后都可以为本类成员函数和所有外 型常量在加上 前缀后都可以为本类成员函数和所有外 部函数访问。 部函数访问。 在三个枚举类型中有一个无名枚举类型, 在三个枚举类型中有一个无名枚举类型,其中定义的每个 枚举常量都是用于设置控制输入输出格式的标志使用的。 枚举常量都是用于设置控制输入输出格式的标志使用的。 该枚举类型定义如下: 该枚举类型定义如下: enum { skipws,left,right,internal,dec,oct,hex,sh owbase,showpoint, uppercase,showpos,scientific,fixed,unitbuf, stdio };
第9章 BIOS和DOS中断

第9章 BIOS和DOS中断1.教学目的:掌握BIOS和DOS中断程序设计的方法2.教学要求:①熟悉BIOS中断调用概念和调用方法②熟悉DOS中断调用概念和调用方法3.教学重点:①BIOS和DOS中断调用的概念和方法4.掌握难点:①BIOS和DOS中断程序设计方法5.教学进程安排:P315~P3486.教学方法:课堂讲授7.教学内容摘要9.1 BIOS和DOS概述9.1.1 基本输入输出系统(basic input / output system,BIOS)例行程序:位置:ROM(0FE000H~0FEFFF);功能:系统加电自检、引导装入、主要I/O设备的处理、接口控制方面的系统中断等;利用BIOS功能编写的程序特点:简洁,可读性好,易于移植。
9.1.2 磁盘操作系统(disk operating system,DOS)位置:软盘或硬盘;,:使BIOS用起来更方便;特点:比BIOS操作更简易,对硬件的依赖更少些。
9.1.3 DOS模块和ROM BIOS的关系图9.1 DOS模块和ROM BIOS的关系DOS 模块和ROM BIOS 的关系如图9.1所示:调用DOS 或BIOS 功能时,一般有以下几个基本步骤:①将调用参数装入指定的寄存器中;②如需功能号,把它装入AH ;③如需子功能号,把它装入AL ;④按中断号调用DOS 或BIOS 中断;⑤检查返回参数是否正确。
9.2 BIOS 中断调用9.2.1 BIOS 中断调用概述图9.2是用户程序和操作系统关系示意图,图9.2 用户程序和操作系统关系示意图9.2.2 BIOS 中断调用方法1、BIOS 调用的基本操作⑴设置分功能号 ⑵置入口参数⑶使用中断语句INT n ⑷分析出口参数2、BIOS 键盘输入功能调用扫描码:键盘上的每一个键都对应一个扫描码(01~83,或01H~53H),根据扫描码能唯一地确定哪一个键改变了状态。
字符码:①大部分键的字符码是一个标准的ASCII 码;②Alt 和功能键(F1~F10)等没有相应ASCII 码的键的字符码为0; ③能产生一个具体操作的一些非ASCII 码键。
C++程序设计(自考4737)第1章(共72张)

数
第13页,共72页。
例1.1
第14页,共72页。
第一章认识(rèn shi)C++的对象
1.1初识C++的函数和对象
对程序的说明:
1)混合型语言
C语言程序包含main函数 面向对象语言没有main函数
C++是混合型语言
第15页,共72页。
第一章认识(rèn shi)C++的对象
1.1初识C++的函数和对象
不能声明变量,只能声明函数返回值。
表示函数无返回值。
第37页,共72页。
2)bool型 (逻辑型,布尔型)
占1个字节。表示(biǎoshì)逻辑运算中的” 真” ”
假”
3)整型(int long short)
int 、short 至少16位 long 至少32位
short 不得比int 长
int 不得比long 长
本书内容(nèiróng)
第1章 第2章 第3章 第4章 第5章
第6章
第7章 第8章 第9章 第10章
认识C++的对象
从结构到类的演变
函数和函数模板
类和对象 特殊函数和成员
继承与派生
类模板与向量
多态性和虚函数 运算符重载及流类库
面向对象设计实例
第5页,共72页。
需要了解(liǎojiě)的C语言知识
第2页,共72页。
课程介绍
课程培养目标
总体目标:
掌握基础理论,具有较强的应用能力。
具体目标: 培养和提高程序设计能力和软件工程能力 ; 该课程又是进行软件开发的直接工具,是学生学习专 业知识的关键技术;
OOP_8输入输出流

数据的传输不用关心数据的结构,与设备无关。
2
8.1 概述
1.输入输出库中的流类层次
最清晰的设计方案是首先定义一个用来描述流的基类。 然后从它派生出用于描述输入流的basic_istream和描述输出 流的basic_ostream,但实际上定义了两个公共基类ios_base 和basic_ios 。
返回流对象的引用
操作符>>可处理的类型:
以引用方式将 数据读入整型
26
8.3 高层输入输出类
2. basic_ostream basic_ostream是模板类,从basic_ios派生而来,为用户 提供高层输出服务。
虚基类
27
8.3 高层输入输出类
成员函数 功能
将一个字符写到输出流中
将字符写到输出流中 定位到输出流的指定位置 返回输出流的当前位置 刷新缓冲区
char str[10]; cin.get( str, 10,'!');
读入信息保存 到字符数组b
getline读入结束有3种情况: 遇到文件结束标志: 遇到行结束标志: 已经读取了s-1个字符:
25
8.3 高层输入输出类
为了对内建数据类型进行格式化输入,basic_istream重载 了右移操作符>> 成员函数
清除所有的输入 状态标志包括 EOF标志
18
21
8.2 ios_base 和 basic_ios
basic_ios重载了操作符!,并提供了basic_ios到void*
类型的转换。
如 果 设 臵 了 failbit 或 badbit 则 返 回 0 ( false) 否则返回非0(ture) 如 果 设 臵 了 failbit 或 badbit 则 返 回 ture, 否 则 返回false
第9章 结构化设计方法

统的过程中由外部形式变换成内部数据形式,这被标 识为输入流。
在软件的核心,输入数据经过一系列加工处理,这被
标识为变换流。
通过变换处理后的输出数据,沿各种路径转换为外部
形式“流”出软件,这被标识为输出流。
整个数据流体现了以输入、变换、输出的顺序方式,
沿一定路径前行的特征,这就是变换型数据流,简称 变换流。
JSD举例分析(Jackson图)
JSD举例分析(Jackson图)
输出数据
输出数据结构
程序结构
程序矛盾
伪码
PROCESS_CUST_DATA seq open PAY_FILE; open CUST_M_FILE; {分别打开支付文件和顾客主文件} PROCESS_CNO_GROUP iter until eof: PAY_FILE; {处理顾客号码组} read PAY_FILE; {读支付文件一个记录} PROCESS_CNO; {读顾客主文件一个记录,找老结余} PROCESS_PAY_RECORD iter until end: CNO_GROUP; {处理顾客号码组中每个支付记录} write report line; {写出报告行} compute total payments; {计算总支付额} read PAY_FILE; {读支付文件下一个记录} PROCESS_PAY_RECORD end; {一位顾客数据处理完} COMPUTE_CUST_TOTAL; {计算顾客总数} COMPUTE_BALANCE seq {计算结余} PROCESS_OLD_BALANCE; {处理老结余} COMPUTE_NEW_BALANCE; {计算新结余) write report line; {写出报告行} COMPUTE_BALANCE end; {计算结余完毕} PROCESS_CNO_GROUP end; {支付文件处理完成} PROCESS_CUST_DATA end ; {Substructure PROCESS_CUST_DATA}
输入与输出流库(与“输出”有关的文档共6张)

ostream-withassign:用于cout, cerr和clog的流类。 ifstream:输入文件流类。 isstream-withassign:用于cout, cerr和clog的流类。 iostream:普通输入输出流类和用于其他输入输出流的基类。 strstream:输入输出串流类。 ostream:普通输出流类和用于其他输出流类的基类。 filebuf:用于磁盘文件的缓冲流类。
程序员教程
C/C++程序设计
输入与输出流库
第一页,共6页。
11.4输入与输出流库
• 与C语言一样,C++语言也没有设置内部的输入输出功能,其
目的是为了最大限度地保证语言与平台的无关性。在进行输入 操作时,可把输入数据看成是逐个字节地从外设流入到计算机 内存;在进行输出操作时,则把输出的数掘看成是逐个字节地 从内存流到外设。
ostream-withassign:用于cout, cerr和clog的流类。 stdiobuf:用干标准毓入输出幸柞的终冲流举.
用于 的流类。 ostream-withassign: cout, cerr和clog istream:普通输入流类和用于其他输入流的基类。
在进行输入操作时,可把输入数据看成是逐个字节地从外设流入到计算机内存;
第三页,共6页。
11.4输入与输出流库
• rlo库中的类 (3)输出流类。 ostfrsetraemabmou:f输s:抽出t象r文e缓件a冲流m流类基。:类普。通输出流类和用于其他输出流类的基类。 ofstream:输出文件流类。 在进行输入操作时,可把输入数据看成是逐个字节地从外设流入到计算机内存;
java08(第8章输入输出流)

在java.io包中定义了很多这二个基本类具体实现 包中定义了很多这二个基本类具体实现 输入输出功能的子类, 输入输出功能的子类,表8.1为部分常用字节输入 为部分常用字节输入 流类和字节输出流子类的功能。 流类和字节输出流子类的功能。
表8.1
类 名 FileInputStream 和 FileOutputStream ByteArrayInputStream和 ByteArrayOutputStream ObjectInputStream 和 ObjectOutputStream FilterInputStream 和 FilterOutputStream DataInputStream 和 DataOutputStream BufferedInputStream 和 BufferedOutputStream
【例8-1 】
1. /* 读取文件 */ 2. import java.io.FileInputStream; 3. import javax.swing.JOptionPane; 4. class Example8_1 5. { public static void main( String args[ ]) 6. { byte buffer[ ] = new byte[2056]; 7. String str; 8. try{ 9. File file=new File("d:/jtest/test.dat"); 10. FileInputStream fileInput = new FileInputStream(file); 11. int bytes = fileInput.read( buffer, 0, 2056 ); //读到的字节数 读到的字节数 12. str = new String( buffer, 0, bytes ); 13. } 14. catch(Exception e) 15. { 16. str= e.toString(); 17. } 18. JOptionPane.showMessageDialog(null,str); 19. System.exit(0); //退出程序 退出程序 20. } 21. }