第9章 输入输出流
第9章iostream库

istringstream类的构造函数为:
istringstream(const char *str); istringstream( );
例如: istringstream st(“12 5.6 hello”);
int a; double b;
st>>a>>b;
cout<<a<<endl<<b;
//12
if(cin!=0)
//cin为false表示读操作失败或遇到文件尾
ios基类定义的状态字有:
ios::badbit 操作无效
ios::goodbit 正常状态 ios::failbit 上次I/O操作失败
ios::eofbit 到达文件尾
可以通过以下成员函数访问当前状态值: int eof( ); 到达文件尾,返回true,否则false
10.2 容器
in>>obj.b; return in;}
int main( )
{data d1(3,8.9); cout<<d1;
return 0;}
第一个参数是ostream 或istream对象的引用,所以只能定义为友元函数。
9.3 文件输入和输出
9.3.1 ofstream流类
ofstream流类对象完成文件的输出,ofstream流类对象的构造函数有: 1、ofstream(char * s,int mode=ios::base_out,int attr=filebuf::openprot); s指向要打开的文件名字符串; mode为打开模式,缺省实参值为输出模式(ios::base_out),还可以为附加模式 (ios::base_app)。若打开的文件不存在,则创建新文件。如果在输出模式下打 开已存在的文件,文件中的数据将被覆盖,若希望保留文件原来的数据,应以 附加模式打开,新数据将添加至文件尾部; 文件打开模式还有: ios::ate 打开文件以便输出,位置指针移到文件末尾(通常用于添加数据); ios::in 打开文件以便输入; ios::trunc 删除文件原来的数据(是ios::out的默认操作) ios::nocreate 如果文件不存在,则文件打开失败 ios::noreplace 如果文件存在,则文件打开失败 ios::binary 以二进制方式打开文件
第9章 系统的信号流图

x ( n)
w(n)
b0 b1
y ( n)
z 1
b1
a1 a2
z 1 z 1
z 1 z 1
z 1
通过加入变量w(n),计算该系统的系统函数,可以得出与原系统相同的结 果 由以上例题可见,一个系统可以由不同的网络结构实现,在选择不同的 网络结构时,我们需要权衡考虑诸多方面的因素,最主要的就是数字计算的 复杂程度和硬件实现的花销。一般最希望网络中乘法器和延时支路尽可能少 ,这是因为乘法运算花费的时间较长,减少乘法器意味着提高运算速度,而 一个延时单元就相当于采用一个寄存器,减少延时单元就意味着减少存储电 路。另一方面,在用硬件实现数字滤波器时,有限寄存器长度(有限计算精 度)和滤波器结构关系密切,所以有时候希望选用对有限字长效应的影响敏 感度较低的网络结构,而宁愿舍弃乘法器和延时单元少的结构。下面我们将 介绍一些常用的网络形式,对IIR系统和FIR系统分开讨论。
H ( z ) n 0 h( n) z n
N 1
如果FIR的冲激响应长度为N,那么H(Z)就是Z-1的N-1次多项式,在z=0处有一 个N-1阶的极点,并有N-1个零点。FIR的实现结构也有多种形式,下面介绍其最 重要的几种网络结构
1、直接形式 N 1 n 若FIR的系统函数为 ,则相应的差分方程为 , H ( z) h ( n ) z n 0 该式我们通常称为卷积和公式,由此,我们可得如下直接形式的网络结构。 N 1
b 1 az 1
则其信号流图如下
x ( n)
将其转置后有
y ( n) y ( n)
b
再按输入在左输出在右的习 惯可以画成
x ( n)
b
x ( n)
输入输出流专题知识讲座

❖ 旳组员函数。从ios类公有派生出istream类和 ostream类分别提供对流进行提取和插入操作旳组 员函数,而iostream类经过组合istream类和 ostream类支持对一种流进行双向操作,它并没有 提供新组员函数。
❖ iostream中预定义四个流对象,它们分别是cin、 cout、cerr、clog。实际上能够将cin视为istream 旳一种对象,而cout视为ostream旳一种对象。流 是一种抽象旳概念,当实际进行I/O操作时,必须 将流和一种详细旳物理设备连接起来。
7.2.3 用流组员函数put输出字符
❖格式: cout.put(字符/数字)[.put(…) ……] ❖ 如是字符,直接输出该字符;如是数字,能够用
八进制、十进制或十六进制表达整数,用该数字 对256取模,输出相应旳ASCII码字符。 ❖例7.4 按相反旳顺序输出“BASIC”。
❖#include <iostream> ❖using namespace std; ❖int main() ❖{char *a="BASIC"; ❖ for(int i=4;i>=0;i--) ❖ cout.put(*(a+i)); ❖ cout.put('\n'); ❖ return 0; ❖}
❖ 前面例7.2和例7.3分别用控制符和流组员函数设 置输出流中旳数据基数,虽然它们旳功能相同, 但是还是有区别:
❖ 用控制符设置输出流旳数据基数后,这个设置会 一直保存到下一次旳设置;
❖ 用组员函数setf()设置旳格式,必须用函数unsetf() 终止后才干重新设置,而且函数setf()设置旳基数 仅仅在此次输出流中生效,之后不论是否用函数 unsetf()终止,下次输出流数据又以默认旳十进制 基数显示。
单片机原理及接口技术课后习题第9章 答案

第九章复习思考题1. 计算机系统中为什么要设置输入输出接口输入/输出接口电路是CPU与外设进行数据传输的桥梁。
外设输入给CPU的数据,首先由外设传递到输入接口电路,再由CPU从接口获取;而CPU输出到外设的数据,先由CPU 输出到接口电路,然后与接口相接的外设获得数据。
CPU与外设之间的信息交换,实际上是与I/O接口电路之间的信息交换。
2. 简述输入输出接口的作用。
I/O接口电路的作用主要体现在以下几个方面:(1)实现单片机与外设之间的速度匹配;(2)实现输出数据锁存;(3)实现输入数据三态缓冲;(4)实现数据格式转换。
3. 在计算机系统中,CPU与输入输出接口之间传输数据的控制方式有哪几种各有什么特点在计算机系统中,CPU与I/O接口之间传输数据有3种控制方式:无条件方式,条件方式,中断方式,直接存储器存取方式。
在无条件方式下,只要CPU执行输入/输出指令,I/O接口就已经为数据交换做好了准备,也就是在输入数据时,外设传输的数据已经传送至输入接口,数据已经在输入接口端准备好;输出数据时,外设已经把上一次输出的数据取走,输出接口已经准备好接收新的数据。
条件控制方式也称为查询方式。
CPU进行数据传输时,先读接口的状态信息,根据状态信息判断接口是否准备好,如果没有准备就绪,CPU将继续查询接口状态,直到其准备好后才进行数据传输。
在中断控制方式下,当接口准备好数据传输时向CPU提出中断请求,如果满足中断响应条件,CPU则响应,这时CPU才暂时停止执行正在执行的程序,转去执行中断处理程序进行数据传输。
传输完数据后,返回原来的程序继续执行。
直接存储器存取方式即DMA方式,它由硬件完成数据交换,不需要CPU的介入,由DMA 控制器控制,使数据在存储器与外设之间直接传送。
4. 采用74LS273和74LS244为8051单片机扩展8路输入和8路输出接口,设外设8个按钮开关和8个LED,每个按钮控制1个LED,设计接口电路并编制检测控制程序。
输入输出流.正式版PPT文档

9.1 概述
C++用流(stream)的概念描述数据的输入 输出,流是计算机中的数据从源头移动到目 的地的这种过程的抽象。
流具有很强的方向性,与输入设备相联系的 流称为输入流,与输出设备相联系的流称为 输出流,与输入输出设备相联系的流称为输 入输出流。
流操作
对流的基本操作有两种,从流中获得数 据称为提取操作,向流中添加数据称 为插入操作。C++语言用流对象来管 理流,流对象一般都与某种设备相联 系,程序员通过操纵流对象,达到控 制输入输出的目的。
c1=cin.get(); cin.get(c2); cin.get(a,21,’#’);
成员函数getline
istream& getline(char *s,int n,char ch=’\n’);
char a[80]; cin.getline(a,21,’#’);
读取控制成员函数
函数原型
9.3 输入流
istream类提供了数据流输入的功能,在程序里可 以不断地从流对象中提取数据,存入相应的变量 中。
输入时使用的istream流对象通常是cin,有4种基 本操作方式。第1种是用流提取运算符,读入基本 类型的数据;第2种是用成员函数get,读入一个 字符或者字符串;第3种是用成员函数getline, 读入一个字符串;第4种是用成员函数read,读 入一串指定数量的字符。
பைடு நூலகம்
说明
int gcount(void) const
istream& ignore(int n=1,int d=EOF)
istream& putback(char ch)
int peek(void)
[java入门学习]第 9 章 Java输入输出操作
![[java入门学习]第 9 章 Java输入输出操作](https://img.taocdn.com/s3/m/606d182c7375a417866f8f58.png)
第九章 Java输入输出操作9.1 Java 输入输出流所有的程序语言都提及与本机文件系统交互的方式;Java也不例外。
我们将看看Java 是怎样处理标准文件输入输出的(包括stdin,stout,stderr)。
当你在网络上开发小程序时,你必须注意直接文件输入输出是不安全因素的关键。
大多数用户设置他们的浏览器,可让你自由的访问他们的文件系统,但有的不让你访问。
当然,如果你开发你内部的应用程序,你也许需要直接访问文件。
标准输入输出Unix的用户,或其他基于命令行系统的用户(如DOS),都知道标准输入输出的含义。
标准输入文件是键盘,标准输出文件是你的终端屏幕。
标准错误输出文件也指向屏幕,如果有必要,它也可以指向另一个文件以便和正常输出区分。
系统类Java通过系统类达到访问标准输入输出的功能。
上面提到的三个文件在这个系统类中实现:Stdin System.in作为InputStream类的一个实例来实现stdin,你可以使用read()和skip(long n)两个成员函数。
read()让你从输入中读一个字节,skip(long n)让你在输入中跳过n个字节。
Stout System.out作为PrintStream来实现stdout,你可以使用print()和println()两个成员函数。
这两个函数支持Java的任意基本类型作为参数。
Stderr System.err同stdout一样实现stderr。
象System.out一样,你可以访问PrintStream 成员函数。
9.2 标准输入输出例子import java.io.* class myCat{public void main(String args[]) throws IOException{int b;int count = 0;while ((b = System.in.read()) != -1){count++;System.out.print((char)b);}System.out.println(); //blank line System.err.println("counted"+count+"total bytes.");}}9.3 普通输入输出类除了基本的键盘输入和屏幕输出外,我们还需要联系文件的输入输出。
标准输入输出流

标准输入输出流标准输入输出流(Standard Input/Output Stream)是计算机程序中常用的一种输入输出方式,它是程序与外部环境进行数据交换的重要方式。
在大多数编程语言中,都有对标准输入输出流的支持,比如在C语言中,可以使用stdio.h库中的函数来进行标准输入输出操作。
在本文中,我将介绍标准输入输出流的基本概念、使用方法和一些常见的应用场景。
标准输入流(stdin)是程序从键盘或其他输入设备读取数据的流,而标准输出流(stdout)则是程序向屏幕或其他输出设备输出数据的流。
这两个流在程序运行时都是默认打开的,可以直接使用,不需要额外的操作。
除了标准输入输出流之外,还有标准错误流(stderr),用于输出程序的错误信息。
在C语言中,可以使用printf函数向标准输出流输出数据,使用scanf函数从标准输入流读取数据。
比如:```c。
int num;printf("Please input a number: ");scanf("%d", &num);printf("The number you input is: %d\n", num);```。
上面的代码中,printf函数将提示用户输入一个数字,然后使用scanf函数从标准输入流读取用户输入的数字,并使用printf函数将其输出到标准输出流。
除了C语言之外,其他编程语言也都提供了类似的标准输入输出流操作方式。
比如在Python中,可以使用input函数获取用户输入,使用print函数输出数据。
在Java中,可以使用System.in和System.out来进行标准输入输出操作。
标准输入输出流在实际应用中有着广泛的用途。
比如在命令行程序中,通常会使用标准输入输出流来与用户进行交互;在网络编程中,可以使用标准输入输出流来进行数据的读写;在文件处理中,可以使用标准输入输出流来进行文件的读写操作。
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. }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第9章输入/输出流考点01 I/O流规则01:由于输入/输出流涉及的内容均为实际应用的API,所以本章相关知识点详见附IO 包。
示列01:请问,File类是否代表文件系统中的一个文件或一个目录?请选择一个正确答案:(1)是(2)否答案:(1)详解:本题考查的核心是File类的用途。
定义在java.io包中的File类用来代表文件系统中的一个文件或目录内一系列文件的集合,所代表的文件或路径可能存在也可能不存在。
示例02:请问,以下哪些定义在java.io.File类上的方法能够抛出异常?请选择所有正确答案:(1)getCanonicalPath()(2)getCanonicalFile()(3)getAbsolutePath()(4)getAbsolutxFilc()(5)createTempFile()(6)createNewFile()(7)mkdir()(8)mkdirs()(9)toURL()答案:(1)(2)(5)(6)(9)详解:本题考查的核心是File类的方法定义。
详情参考API。
示例03:请问,以下哪些类提供了创建一个目录的方法?请选择一个正确答案:(1)File(2)DataOutput(3)Directory(4)FileDescriptor(5)FileOutputStream答案:(10)(6)详解:本题考查的核心是File类上定义的创建目录的方法。
File类上其定义了两个用于创建目录的方法,分别为和方法。
方法用于创建一个由类代表的目录。
Mkdirs()方法用于创建一个由File类代表的目录,包括创建父目录。
示例04:请问以下关于File类的描述哪些是正确的?请选择所有正确的答案:(1)File类可以用于改变当前工作路径。
(2)File类可以用于访问当前工作路径中的文件。
(3)当一个File类实例被构建时,对应的目录或文件在本地文件系统中被创建。
(4)File类可以用于访问本地文件系统的目录或文件。
(5)File类实现实例可以被垃圾回收器回收。
(6)当一个File类实例被垃圾回收器回收后,对应的目录或文件也被删除。
答案:(2)(4)(5)详解:本题考查的核心是File类。
选项(2)(4)正确,。
这正是File类的用途。
选项(5)正确,选项(6)错误,因为File类实例只是文件的代表,并不是文件本身,其如同其他类实例一样,可以被垃圾回收器回收,并且不会将对应的文件删除掉。
选项(1)错误,File 类实例代表的文件如果杂文件系统中不存在File,类也不会在文件系统中自动创建该文件,但可以通过调用File类中定义的方法来创建一个新的空的文件。
示例05:请问以下哪些描述是正确的?请选择一个正确答案:(1)RandomAccessFile类是java.io.File类的子类。
(2)Java.io.FileWriter类提供有操作基本数据类型的方法。
(3)RandomAccessFile类提供有删除磁盘文件的方法。
(4)File类提供有删除磁盘文件的方法。
答案:(4)详解:本题考查的核心是File类的delete()方法。
定义在java.io.File类上的delete方法用来删除一个由此File类实例代表的文件或目录。
如果此路径名代表的是目录,则该目录必须为空才能被删除。
选项(1) 错误,因为RandomAccessFile类和File类均是Objeect类的直接子类。
选项(2)错误,FileWriter首先类没有定义任何方法,其次FileWriter类是java.io.Writer 的子类,因此继承的方法基本也是字符操作的方法。
选项(3)错误,RandomAccessFile类上来提供有删除文件的方法,其提供的方法基本上是对文件进行读写的方法。
示例06:请问,以下哪些语句是构造实例的正确形式?请选择所有正确答案:(1)RandomAccessFile(“file”,“r”);(2)RandomAccessFile9(“r”,“file”);(3)RandomAccessFile(“r”,“file”);(4)RandomAccessFile(“file”,‟ r‟);(5)RandomAccessFile(“file”,“rw”);答案:(1)(5)详解:本题考查的核心是随机访问文件RandomAccessFile类的构造器。
RandomAccessFile 类共定义了两个构造器,分别为RandomAccessFile(File file,String mode)和RandomAccessFile(String nane, String mode)。
其中参数mode,既访问模式只能取只读模式或读写模式rw。
示例07:请问,以下哪些类的构造器需要mode参数r或rw?请选择一个正确答案:(1)DataInputStrcam(2)InputStream(3)RandomAccessFile(4)File(5)以上均不对。
答案:(3)详解:本题考查的核心是随机访问文件RandomAccessFile类的构造器,解释同上。
示例08:请问,以下哪些有关RandomAccessFile类的描述是正确的?请选择所有正确答案;(1)当对使用只读模式创造的文件进行写操作时,则IOException异常抛出。
(2)RandomAccessFile类提供有删除磁盘上文件的方法。
(3)RandomAccessFile类可以和DataInputStream进行连接。
(4)使用读写模式可以创造一个不存在的指定文件。
(5)RandomAccessFile类提供有读写基本数据类型数据的方法。
答案:(1)(4)(5)详解:本题考查的核心是RandomAccessFile类。
选项(2)错误,RandomAccessFile类上未提供有删除文件的方法,起提供的方法基本上是对文件进行读写的方法。
选项(3)错误,因为RandomAccessFile类和io包中其他两个流类和读写器类不兼容,因此RandomAccessFile 类不可以和DataInputStream类进行连接。
选项(4)正确,RandomAccessFile类不同于File 类,其可以在文件系统中创建一个不存在的指定文件,但必须采用rw读写模式。
示例09:请问,以下哪些修饰符用于修饰属性时,该属性不能被序列化?请选择所有正确答案;(1)private(2)static(3)transient(4)protected答案:(2(3)详解:本题考查的核心是序列化的条件。
类属性一般都能被序列化,只有被transient关键修饰的类属性,使得该属性不再是对象的持久状态的一部分,因此该属性内容在序列化后无法获得访问。
示例10:请问,以下哪些有关Serializable的描述是正确的?请选择一个正确答案:(1)Serializable是java语言中的一个关键字。
(2)Serializable是一个可以被实现的接口。
(3)Serializable是一个可以被继承的类。
(4)以上均不对。
答案:(2)详解:本题考查的核心是Serializable接口。
Serializable是一个接口,实现了此接口的类具有序化的能力。
反之,没有实现此接口的类不具有序化其状态的能力。
一个具有序化的能力的类,其子类也具有序化能力。
此接口没有定义任何反法和属性域,只有用来标记序化的能力。
示例11:请问,以下哪些是FileOutputStream类的正确构造器形式?请选择所有正确答案:(1)FileOutputStream(FileDescriptor fd)(2)FileOutputStream(String n,boolean a)(3)FileOutputStream(boolean a)(4)FileOutputStream()(5)FileOutputStream(File f)答案:(1)(2)(5)详解:本题考查的核心是FileOutputStream类的构造器。
该类工定义5种形式的构造器,分别为FileOutputStream(File file), FileOutputStream(File file, Boolean append), FileOutputStream(FileDescriptor fdObj ), FileOutputStream(String name) 和FileOutputStream(String name, boolean append).示例12:请问,以下哪些定义在java.io包中的抽象类?请选择所有正确答案:(1)InputStream(2)PrintStream(3)Reader(4)FileInputstream(5)FileWriter答案:(1)(3)详解:本题考查的核心是java.io包中的抽象类。
抽象类的用途是规范一类对象的共性,具体类继承该类。
抽象类一般位抽象类于继承树的顶端。
在io包中主要分为两种类,输入/输出流类和读/写类。
这两种类的顶层类分别为InputStream/OutputStream.Reader/Writer,均为抽象类。
示例13:请问以下哪些描述是正确的?请选择所有正确答案:(1)InputStream类和InputStream类是基于字节流的。
(2)ObjectInputStream类和ObjectInputStream类不支持序列化的对象。
(3)Reader类和Writer类是基于字符流的。
(4)Reader类和Writer类是支持对象序列化的首选。
答案:(1)(3)详解:本题考查的核心是java.io包中的类。
在io包中主要分为两种类,基于字节流的输入/输出流类和基于字符流的读/写类。
因此选项(1)(3)正确。
选项(2)错误,因为ObjectInputStream和ObjectInputStream类是专门被用来处理序列化的对象。
示例14:请问,以下哪个类被用于作为基本的IO控制台?请选择一个正确答案:(1)System(2)SecurityMananger(3)Math(4)Runtime答案:(1)(5)详解:本题考查的核心是System类。
System类是定义在包ng中的,不是定义java.io在包中,一般用作基本的IO控制台打印输出信息。
调用System.out.print()方法打印输出信息。
可向该方法传入所有类型数据。
包括引用型数据。
示例15:请问,从InputStream对象如何创建一个Reader对象?请选择一个正确答案:(1)使用InputStream类中定义的createReader()方法。
(2)使用Reader类中定义的createReader()方法。