第8章 数据流与文件的输入输出

合集下载

程序设计原理输入输出流与文件操作

程序设计原理输入输出流与文件操作
有格式读写,以某种数据类型为单位读写
例如:读一个整数,写一个浮点数等;
无格式读写,以字节为单位读写,不区分其中 的内容
例如:读20个字节,写50个字节等;
程序设计原理输入输出流和文件操作
缓冲区刷新
向输出流中写数据时,通常是先向缓冲区中写, 当缓冲区写满时,才真正向输出流写;也可以 通过函数在程序中主动将缓冲区内容写入输出 流。
程序设计原理输入输出流和文件操作
输出流
用成员函数put输出字符 cout .put(‘A’);
put的连续使用 cout .put(‘A’).put(‘a’);
程序设计原理输入输出流和文件操作
输入流
读取运算的返回值 重载>>运算符的定义:
istream &operator >>(istream &input, A & a){ ……. return input;
作算子,调用方式不同: cin >> setw(5); 或者 cin.width(5); cout << setw(5); 或者 cout.width(5);
程序设计原理输入输出流和文件操作
设置域宽的流操纵算子
设置域宽(setw,width) 例:int w = 4;
char string[10]; cin.width(5); while(cin >> string){
程序设计原理输入输出流和文件操作
流操纵算子
整数流的基数:流操纵算子dec,oct,hex,setbase 浮点数的精度(precision,setprecision) 设置域宽(setw,width) 用户自定义的流操纵算子 使用流操纵算子需要 #include <iomanip>

C语言对文件的输入输出

C语言对文件的输入输出

字符一律以ASCII形式存储,数值型数据既可以用ASCII形式存储,也可以用二进制形式存储。
内存中存储形式 00000000 00000000 00100111 00010000
ASCII形式
00110001 00110000 00110000 00110000 00110000
(1)
(0)
(0)
(0)
其实,带b和不带b只有一个区别,即对换行的处理。由于在C语言用一个′\n′即可实现换行,而在Windows系统中为
实现换行必须要用 “回车”和“换行”两个字符,即′\r′和′\n′。因此,如果使用的是文本文件并且用“w”方式打开,在向文
件输出时,遇到换行符′\n′时,系统就把它转换为′\r′和′\n′两个字符,否则在Windows系统中查看文件时,各行连成
第10章
C语言对文件的输入输出
C文件的有关基本知识
什么是文件
文件有不同的类型,在程序设计中,主要用到两种文件: (1) 程序文件。包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行文件(后缀为.exe)等。这种文件 的内容是程序代码。 (2) 数据文件。文件的内容不是程序,而是供程序运行时读写的数据,如在程序运行过程中输出到磁盘 (或其他外部设备)的数据,或在程序运行过程中供读入的数据。如一批学生的成绩数据、货物交易的数 据等。
typedef struct
{ short level;
//缓冲区“满”或“空”的程度
unsigned flags;
//文件状态标志
char fd;
//文件描述符
unsigned char hold; //如缓冲区无内容不读取字符
short bsize;

输入输出流和文件PPT教学课件

输入输出流和文件PPT教学课件

例:Int a=20;
System.out .print(a)
System.out .println(“大家好”) //加换行
➢ 用java.text包中的NumberFormat类可以控制显 示格式,有三种方法:
NumberFormat.getNumberInstance( ) //附加逗号
NumberFormat.getCurrencyInstance( ) //货币符号
8.2 输入输出流和文件处理
8.2. 1 流的概念
➢ 流是指在计算机的输入与输出之间运动的数据 的序列。输入流代表从外设流入计算机的数据
序列,输出流代表从计算机流向外设的数据序 列。
➢ 流的最大特点是:数据的获取和发送均按数据 序列顺序进行。
➢ Java中的流分为两种(被抽象为四个类): 字节流: InputStream类和OutputStream类 字符流: Reader类和 Writer类 字符流比字节流更有效。
double x=2345.123; String s1,s2,s3;
NumberFormat n1=NumberFormat.getNumberInstance( );
NumberFormat.getPercentInstance( ) //百分号
2020/12/09
8
例:import java.io.*; import java.text.*;
Public class TestOutput{ Public static void main(String args[ ]){
➢ 通过Java的控制台类Console类
Console类不是Java的标准类库,它属于corejava包。
使用Console类时需要加:

C语言中的文件操作与输入输出流处理

C语言中的文件操作与输入输出流处理

C语言中的文件操作与输入输出流处理C语言是一种广泛使用的编程语言,而文件操作与输入输出流处理是C语言中非常重要的一部分。

在C语言中,我们可以通过文件操作来读取和写入文件,以及对文件进行各种处理。

同时,输入输出流处理也可以让我们方便地与外部文件进行交互,实现数据的输入输出。

在C语言中,文件操作主要涉及到文件的打开、关闭、读取和写入等操作。

下面我们来具体了解一下C语言中文件操作的一些常用函数:1. fopen函数:用于打开一个文件,语法为:FILE *fopen(const char *filename, const char *mode);其中,filename为文件名,mode为打开文件的模式,有"r"(只读)、"w"(写)、"a"(追加)等不同模式。

2. fclose函数:用于关闭一个打开的文件,语法为:int fclose(FILE *stream);其中,stream为打开文件所返回的指针。

3. fgetc和fputc函数:分别用于读取和写入单个字符,语法为:int fgetc(FILE *stream)和int fputc(int c, FILE *stream)。

4. fgets和fputs函数:分别用于读取和写入一行字符,语法为:char *fgets(char *str, int n, FILE *stream)和int fputs(const char *str, FILE *stream)。

5. fprintf函数:用于向文件中格式化输出数据,语法为:int fprintf(FILE*stream, const char *format, ...);其中,format为输出格式。

C语言中的输入输出流处理则是通过标准输入输出流来实现的。

通过标准输入输出流,我们可以方便地进行终端输入输出,或与外部文件进行数据交互。

下面是C语言中一些常用的输入输出流处理函数:1. scanf函数:用于从终端输入数据,语法为:int scanf(const char *format, ...);其中,format为输入格式。

C语言的文件操作与输入输出流控制

C语言的文件操作与输入输出流控制

C语言的文件操作与输入输出流控制C语言是一种广泛应用于系统编程和嵌入式开发的高级编程语言,它提供了丰富的文件操作和输入输出流控制的功能,使得程序能够与外部环境进行数据的交互和存储。

本文将介绍C语言中文件操作和输入输出流控制的相关知识。

一、文件操作在C语言中,文件是指计算机中存储数据的一种资源,可以是文本文件、二进制文件等。

文件操作是指对文件进行读取、写入、打开、关闭等操作。

1. 文件的打开与关闭在C语言中,使用文件指针来操作文件。

文件指针是一个指向文件的指针变量,通过它可以对文件进行读写操作。

文件的打开使用fopen函数,语法如下:FILE *fopen(const char *filename, const char *mode);其中,filename是文件名,mode是打开模式。

常见的打开模式有:- "r":只读模式,打开一个已存在的文本文件。

- "w":写入模式,打开一个文本文件,如果文件不存在则创建,如果文件存在则清空文件内容。

- "a":追加模式,打开一个文本文件,如果文件不存在则创建,如果文件存在则在文件末尾追加内容。

- "rb"、"wb"、"ab":对应的是二进制文件的读写模式。

文件的关闭使用fclose函数:int fclose(FILE *stream);其中,stream是文件指针。

2. 文件的读取与写入文件的读取使用fscanf函数,语法如下:int fscanf(FILE *stream, const char *format, ...);其中,stream是文件指针,format是格式控制字符串,...是要读取的变量。

文件的写入使用fprintf函数,语法如下:int fprintf(FILE *stream, const char *format, ...);其中,stream是文件指针,format是格式控制字符串,...是要写入的变量。

文件和数据流课件

文件和数据流课件

文件写入的常见方式
使用内置的`open()`函数
使用`write()`方法
除了可以打开文件外, `open()`函数还支持写入模式 ,我们可以使用这个模式来写 入文件。
write()方法用于将文本写入文件中。
使用`writelines()…
writelines()方法一次写入多行文本到文
件中。
使用`seek()`方法改变文 …
使用文件对象的write()方法还可 以将数据追加到文件末尾。追加 数据时,需要以追加模式打开文 件(使用'a'作为打开模式)。
数据流的常见问题及解决方案
数据流丢失
在读取或写入数据流时,可能会 遇到数据流丢失的问题。为了避 免数据流丢失,可以使用备份文
件或进行数据备份。
数据流冲突
多个程序同时访问同一个文件时, 可能会产生数据流冲突。为了避免 数据流冲突,可以使用锁机制来控 制对文件的访问。
写入权限
允许用户修改文件的内容。
执行权限
允许用户执行文件,如可执行 程序等。
访问权限的设定
可以通过文件属性或操作系统 权限设置来限制用户对文件的
访问权限。
02
文件读取和写入
文件读取的基本方法
使用内置的`open()`函数
使用`read()`方法
使用`readline()`方法
使用`readlines()`…
数据流分词实例
总结词
将数据流分割成独立的词汇或词组,以便进行后续的数据处理和分析。
详细描述
数据流分词是一种常见的预处理技术,用于将数据流中的连续字符或符号分割成独立的词汇或词组。分词算法通 常基于规则、词典和统计方法来实现。通过对数据流进行分词,可以方便地对数据进行后续的处理和分析,如情 感分析、主题建模等。

C语言文件的输入与输出

C语言文件的输入与输出
华中科技大学计算机学院
/* 缓冲区空满 */ /* 文件状态标志 */ /* 文件描述符 */ /* 非缓冲回送字符 */ /* 缓冲区大小 */ /* 指向缓冲区指针 */ /* 当前读写位置指针*/ /* 临时文件描述符 */ /* 有效性检验标志 */ /* 结构类型命名 */
目录
15
C语言程序设计
随机读文件过程示意
华中科技大学计算机学院 13
C语言程序设计
实现C语言应用程序的I/O运算之两种方法: 调用 C 提供的I/O函数--标准I/O函数 调用OS提供的I/O函数--底层I/O函数
标准I/O函数是基于I/O流的操作。 C 语言实现“字符流和BIT 标准I/O函数是基于I/O流的操作。流是从源点到终点方向流动 的数据。文件是“存储”在I/O设备上的数据的抽象;流是内存与 流特性差异的I/O设备”之间的转换,即各种I/O设备的差异对于 I/O设备之间流动的数据的抽象。实现时,流存储在I/O缓冲区中。 应用程序是透明的。基于I/O流操作的文件称为流式文件。 输入流 内存 流 I/O缓冲区 文件 I/O设备
华中科技大学计算机学院
2
C语言程序设计
重点讲解
11.1 文件概述
11.2 FILE指针和标准流式文件
11.3 流式文件的顺序输入输出 11.4 流式文件的随机输入输出 11.5 其它文件操作函数 11.6 输入输出的低层接口 11.7 流式文件系统中库函数的设计
小结
华中科技大学计算机学院
3
C语言程序设计
p r i n t f ( “ h i ” ) ; \n} \n EOF
打印机输出缓冲数据区存储示意图
m a i n ( ) { \n
p r i n t f ( “ h i ” ) ; \n} \n EOF

第8章文件、流和输入输出技术

第8章文件、流和输入输出技术

下一页
4
8.2 I/O流类

Java有各种各样的执行I/O的流,在 java.io包中定义了这些流,其层次结 构图如图8.3所示。编写程序时, java.io包必须被执行输入输出的程序 导入。
输入输出流可以从以下几个方面进行分类:



从流的方向划分:输入流和输出流; 从流的分工划分:节点流和处理流; 从流的内容划分:面向字符的流和面向字节的 流。
文件、流和输入输出技术
开始
返回
上一页
下一页
17
8.3 过滤流与流的串接



过滤流在读/写数据的同时可以对数据进行 处理,它提供了同步机制,使得某一时刻 只有一个线程可以访问一个I/O流,以防止 多个线程同时对一个I/O流进行操作所带来 的意想不到的结果。 类FilterInputStream和FilterOutputStream 分别作为所有过滤输入流和输出流的父类。 作用:给朴素的Input/OutputStream加上 一些修饰--某些有用的格式
文件、流和输入输出技术 开始 返回 上一页 下一页 15
3. Input/OutputStream的子类

◇ FileInputStream、FileOutputStream ◇ PipedInputStream、PipedOutputStream ◇ ByteArrayInputStream、 ByteArrayOutputStream ◇ ObjectInputStream、ObjectOutputStream ◇ FilterInputStream、FilterOutputStream ◇ StringBufferInputStream ◇ SequenceInputStream

java08(第8章输入输出流)

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. }

计算机基础知识什么是输入输出(IO)操作

计算机基础知识什么是输入输出(IO)操作

计算机基础知识什么是输入输出(IO)操作计算机基础知识:什么是输入输出(IO)操作计算机是一种用于处理数据的工具,而输入输出(IO)操作是计算机与外部世界进行数据交流的方式。

通过输入,我们可以将外部的数据传递给计算机进行处理,而输出则是将计算机处理后的数据传递给外部环境。

在本文中,我们将探讨输入输出操作的基础知识。

一、输入输出(IO)的概念输入输出是计算机与外部环境进行数据交流的方式。

输入是指将外部数据传递给计算机,供计算机进行处理和分析;输出则是将计算机处理后的数据传递给外部环境,供人们观察和使用。

在计算机系统中,输入输出设备起到了极为重要的作用。

例如,键盘、鼠标和触摸屏等输入设备用于接收用户的命令和数据,显示器、打印机等输出设备则用于向用户展示计算机处理的结果。

二、输入输出的分类1. 人机交互输入输出:这种输入输出方式主要是通过外部设备与人进行交互。

例如,使用键盘输入文字、鼠标点击图标进行操作、触摸屏选择菜单等。

同时,显示器将结果输出给人们观察。

2. 设备驱动程序输入输出:这种输入输出方式是通过设备驱动程序进行的。

计算机通过设备驱动程序与各类外部设备进行通信。

例如,打印机通过打印机驱动程序与计算机通信,将计算机处理的文档输出。

3. 文件输入输出:文件是计算机中存储数据的一种形式,也是计算机与外部世界交流的一种方式。

我们可以将数据存储在文件中,进行读取和写入操作。

三、输入输出的基本操作在计算机基础中,我们了解到输入输出操作的基本函数包括读取和写入。

读取是指从外部获取数据并传递给计算机进行处理;写入则是将计算机处理的结果传递给外部。

读取函数的基本形式如下:input(data):从外部读取数据,存储在变量data中。

写入函数的基本形式如下:output(data):将变量data中的数据写入外部设备,供外部环境使用。

四、输入输出的应用输入输出操作在计算机中得到了广泛的应用。

以下是一些常见的输入输出操作应用场景:1. 数据采集:许多科学实验、气象观测等需要收集大量外部数据,通过输入输出操作,这些数据可以传递给计算机进行进一步的分析和处理。

第8讲文件与输入输出流

第8讲文件与输入输出流

Reader类的层次结构
20
Java程序设计(SP3002)
OutputStream类是字节输出流的抽象类,此抽象 类是表示输出字节流的所有类的超类。 OutputStream类中的所有方法均返回void,在遇 到错误时会引发IOException异常。
OutputStream类的层次结构
21
Java程序设计(SP3002)
OutputStream负责输出流
子类命名格式:XxxxInputStream或XxxxOutputStream ②字符流(Unicode):基本单位是16位Unicode字符 抽象类:Reader 负责输入流
Writer负责输出流
子类命名格式:XxxxReader或XxxxWriter
18
Java程序设计(SP3002)
4
Java程序设计(SP3002)
表1 File类的常用方法
方法及变量名 public File(File dir,String name) public File(String path,String name) public File(String path) public static final String pathSeparator public boolean canRead() public boolean canWrite() public boolean delete() 功能描述 由指定的目录、名字创建该对象 由指定的路径、名字创建该对象 由指定路径创建该对象 返回系统的路径分隔符 如果文件可读为真 如果文件可写为真 删除文件
public boolean equals(Object obj)
public boolean exists()

高中信息技术必修课件数据的输入与输出

高中信息技术必修课件数据的输入与输出

FTP协议
文件传输协议,用于从一个主 机到另一个主机上的文件传输 。
配置方法
一般包括选择适当的网络通信 协议、设置IP地址、子网掩码
、默认网关等网络参数。
局域网内文件共享和访问权限设置
文件共享
在局域网内,可以通过设置共享 文件夹或共享驱动器来实现文件
的共享。
访问权限
可以通过设置访问权限来控制哪些 用户可以访问共享文件,以及他们 的访问级别(如只读、读写等)。
适应不同场景
多模态交互可以适应不同的应用场景和需求,如智能家居、智能办公、教育等。在这些场 景中,用户可以通过语音、手写等方式与设备进行交互,实现更加智能化的操作和体验。
06
数据输出方式及设备选择
数据输出定义及其意义
数据输出定义
数据输出是指将计算机内部处理后的 结果或信息,以人类可读的形式展现 出来,如文字、图形、图像、声音等 。
挑战
手写识别技术仍面临一些挑战,如手写体风格多样性、书写不规范、噪声干扰等问题。此外, 对于复杂的手写文本和场景,如草书、连笔字等,手写识别技术的性能仍有待提高。
多模态交互在数据输入中作用
提高交互效率
多模态交互允许用户同时使用语音、手写等多种方式进行数据输入,提高了交互效率。
增强用户体验
多模态交互提供了更加自然、便捷的数据输入方式,使用户能够更加方便地与计算机进行 交互。
设置方法
在操作系统中,可以通过“共享” 或“高级共享”等选项来设置文件 共享和访问权限。
远程桌面连接和云存储服务应用
远程桌面连接
通过远程桌面协议(如RDP)连接到 远程计算机,实现远程控制和操作。
云存储服务
应用方法
使用远程桌面客户端软件连接到远程 计算机,或使用云存储服务提供商的 客户端软件或Web界面来上传、下载 和管理文件。

程序编辑中的文件操作和输入输出

程序编辑中的文件操作和输入输出

程序编辑中的文件操作和输入输出文件操作和输入输出是程序编辑过程中的关键环节,它们负责与外部文件或用户进行数据交互。

良好的文件操作和输入输出设计可以提高程序的可用性和灵活性。

本文将介绍文件操作和输入输出在程序编辑中的重要性,并讨论常用的文件操作函数和输入输出方法。

一、文件操作文件操作指的是对外部文件进行读取、写入、修改等操作。

在程序编辑过程中,我们经常需要与文件进行交互,读取文件中的数据并根据需求进行处理。

常见的文件操作函数有:1. 打开文件:使用open()函数打开指定的文件,并返回文件对象。

在打开文件时,需要指定文件的路径、打开模式等参数。

2. 读取文件内容:使用read()函数,可以一次性将整个文件内容读取到内存中。

也可以使用readline()函数逐行读取文件内容,或使用readlines()函数一次性将所有行读取到一个列表中。

3. 写入文件:使用write()函数可以将指定的内容写入文件中。

写入文件时,需要使用“w”或“a”模式打开文件,分别表示覆盖原内容和追加内容。

4. 关闭文件:使用close()函数关闭文件,释放文件资源。

在文件操作完成后,应该及时关闭文件,防止资源浪费。

二、输入输出输入输出是程序与用户进行交互的重要手段,可以实现程序的灵活性和可操作性。

常见的输入输出方法有:1. 标准输入输出:程序可以通过标准输入流(stdin)接收用户输入的数据,通过标准输出流(stdout)向用户输出结果。

可以使用input()函数读取用户的输入,并使用print()函数输出结果。

2. 文件输入输出:程序还可以通过文件进行输入输出。

通过读取外部文件中的数据作为输入,或将程序处理结果写入外部文件,可以实现更灵活的数据交互。

3. 命令行参数:除了标准输入输出和文件输入输出外,程序还可以通过命令行参数进行输入输出。

通过在命令行中传入参数,程序可以获取相应的输入数据,并将处理结果输出到命令行或指定文件中。

第8章 输入输出及文件

第8章 输入输出及文件

字节流InputStream 类
InputStream定义了字节输入流的框架。 它的最重要的三个方法(输入流提供数据输入) int read() :从输入流中读一个字节,形成一个0~255
之间的整数返回(是一个抽象方法)。 int read(byte b[]) :读多个字节到数组中。 int read(byte b[], int off, int len):从输入流中读取长度为 len的数据,写入数组b中从索引off开始的位 置,并返回读取得字节数。
8.5 文件类File
java.io.File类对象提供如下功能: 1、表示一个文件或目录的路径名称。 2、可以获得文件的属性信息。 3、判断是否为目录或文件,是否存在等。 4、文件系统的遍历。 5、File类对象不提供文件内容的操作。
File类的常用方法1
•public File(String path);/*如果path是实际存在的路径,则 该File对象表示的是目录;如果path是文件名,则该File对象表 示的是文件。*/ •public File(String path,String name);//path是路径名, name是文件名
8.2 流的分类
Java1.3及以前版本用java.io.*包内的流实现输入输出 更高版本出现了java.nio.*和java.nio.channels包,实 现了更新的I/O功能。 本书只讲解java.io.*包内的类。 字符流:是指数据序列的基本构成单位是16位的Unicode 字符数据,如各类基于字符编码的文本文件。 字节流:是指数据序列的基本构成单位是8位的字节数据, 如各类基于二进制数据的文件。 输入流:指从某个数据来源输入的数据序列只可读不可写。 输出流:指将向某个数据目的地输出的数据序列,只可写 不可读。 为提高输入输出效率增加了缓冲流,也就是一个流配有一 个缓冲区,可以提高效率。注:(这里的读和写是相对于 程序来说的)

第08章 输入输出流和文件操作

第08章  输入输出流和文件操作
《Java程序设计实用教程(第4版)》
【例8.1】 理解字节流。
(1) 从文件字节流中读写1个字节
1f „ 18 17 „ 10 f „ 8 7 „ 0 写入 字节流 1111 1111 读取 255 0000 0000 0000 0000 0000 0000 1111 1111 -1 1111 1111 1111 1111 1111 1111 1111 1111
【思考题8-2】向字节流写入1字节-256和256,再 各读取1字节,值为多少?为什么? 【答】0,因为-256 (1……1 00000000) ; 0,256 (0……01 00000000)
《Java程序设计实用教程(第4版)》
(2) 从字节流中读写4个字节作为 1f „ 18 17 „ 10 f „ 8 7 „ 0 1个int整数 -128 1111 1111 1111 1111 1111 1111 1000 0000
内存
过滤
Ou tp wri utStr te(v eam alu e) Outp 字节数组 utStre tream S t byte[] buffer w u p r ite(bu am In ) r e f f ffer) bu read( 基本数据类型 DataOutputStream DataInputStream 变量 writeInt(value) Ob readInt() int value jec m t trea rea Inpu S t u d O tS tr utp ct(obj) 对象 O b je eam t c je je ct( Object obj Ob riteOb ) w am tre S t u Inp read()
《Java程序设计实用教程(第4版)》
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
setiosflags(ios::scientific)设置了指数表示方式。
setprecisionБайду номын сангаас3)和setiosflags(ios::fixed)共同设置了浮点数表示方式。
例题2:已知int a, *pa=&a;输出指针pa十进制的地址值的方法是()。
A.cout<<pa;B.cout<<*pa;
cout<<buf<<endl;
i++;
}
}
bool getnum(char *s)
{bool found(false);
char ch;
while(cin.get(ch)&&!isdigit(ch)) ;
if(!cin)return false;
do{
*s++=ch;
}while(cin.get(ch)&&isdigit(ch));
cout<<setiosflags(ios::scientific);
cout<< number2<<endl;
cout<<setprecision(5);
cout<<setiosflags(ios::fixed);
cout<< number2<<endl;
}
运行结果:
Decimal:15
Hexadecimal:f
例题3:关于read()函数的下列描述中,()是对的。
A.A.函数只能从键盘输入中获取字符串
B.B.函数所获取的字符多少是不受限制的
C.C.该函数只能用于文本文件的操作中
D.D.该函数只能按规定读取所指定的字符数
答案:D
分析:read成员函数的使用格式是:read(char *buf,int size);
结果第5行没有设置有效位数,按流的默认值6位输出3.14159。
setprecision(3)控制符设置了3位有效位数,输出3.14。
setw(15)控制符设置了域宽为15,只影响下一个值的输出。
setiosflags(ios::left)设置了左对齐方式;
setiosflags(ios::right)设置了右对齐方式。
(2)向字符文件写入数据向字符文件写入数据有2种方法。
1)调用从ostream流类中继承来的插入操作重载函数。使用方法同交互输出过程,但这时插入操作符的第一个操作数应是某个定义过的文件对象而不是cout。
(3)从字符文件读取数据到内存变量从打开的字符文件中输入数据到内存变量有3种方法。
10.对字节文件(二进制文件)的操作
(3)不清楚如何用重载后的插入符与提取符进行输入/输出。
例题6:从输入流中分析出数字串。例如:设输入串为
A012BCD378 274D<CR>
EF55G^Z<CR>
则输出为:
Digit string 1 is: 012
Digit string 2 is: 378
Digit string 3 is: 274
(3)访问二进制文件和read()成员函数
从字节文件读数据,就是把具有一定字节数的内容原原本本地复制到内存中由指定字符指针所指向的内存缓冲区中,所读内容是从当前文件指针所指位置开始读取,然后文件指针自动向后移动所读取内容的字节数。
11.随机访问文件
(1)随机访问文件是可以使用位移量对其中的数据进行访问,“位移量”指以当前位置(开始点或当前位置或文件末尾)为基点,移动的字节数。
(2)C++语言既支持顺序访问文件也支持随机访问文件。为实现对文件的随机访问,fstream文件类中定义了以下4个成员函数:seekg ( )、tellg ( )、seekp ( )和ellp ( )。seekg ( )和tellg ( )带后缀g表示get,这两个函数用于从文件中读取数据的情况;函数seekp ( )和tellp ( )带后缀p表示put,这两个函数用于向数据文件中写数据的情况。
7.C++语言把文件看作是一个字符(字节)序列,即由一个一个字符的数据顺序组成。根据数据的组织形式可分为ASCII文件和二进制文件两种。ASCII文件又称为文本(text)文件或字符文件,它的每一个字节放一个ASCII代码,代表一个字符。二进制文件又称为字节文件,是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。
4.用格式控制符进行格式化输入、输出
5.所谓“文件”一般是指:存储在外部介质上的数据的集合。文件可用于存入程序代码,也可用于存放数据。
6.C++语言的文件名也是由文件的主名和扩展名两部分组成,它们之间用“.”号分隔。文件的主名是由用户命名的一个有效的C++标识符,为了同其他软件系统兼容,一般不超过8个有效字符。
{//操作代码
return s;
}
其中左操作数是对ostream或istream对象的引用,右操作数接收将被输出或输入的对象。
(3)对重载的插入符或提取符的调用形式如下:
ostream<<obj;
istream>>obj;
分析:
(1)不清楚插入符和提取符应重载为类的友元。
(2)重载插入符和提取符格式错误。
Hexadecimal:F
Octal:17
6.54321
6.54
6.54
6.54
6.543E+000
6.5432
分析:程序中使用输入输出流格式控制符,必须包含头文件iomanip.h。
整型数number=15是个十进制数,dec控制符输出十进制数;hex控制符输出十六进制数f;setiosflags(ios::uppercase)控制符输出大写十六进制数F;oct控制符输出八进制数17。
8.2 例题分析
例题1:说明下面程序的格式控制符的作用
#include <iostream.h>
#include <iomanip.h>
void main()
{ int number1=15;
double number2=6.54321;
cout<<"Decimal:"<<dec<<number1<<endl;
例题4:某个类的输入、输出重载操作符>>和<<应定义为类的成员函数,描述正确吗?
答案:错误。
分析:由于重载插入符和提取符时,其左操作数是流,右操作数是类的对象,因此,插入符和提取符只能重载为友元函数。
例题5:下面程序建立了类triangle,用来存储直角三角形的宽与高。这个类的重载输出运算符函数在屏幕上显示三角形。
其中,buf用来存放读取到的字符指针或字符数组,size用来指定从输出流中读取字符的个数。read函数不仅可以从键盘输入中读取字符,也可以从任意输入流中获取信息,因此答案A错误。read函数读取的字符数受到size参数的限制,答案B错误。read函数不仅可以用于文本文件,也可以用于二进制文件,答案C错误。
cout<<"Hexadecimal:"<<hex<<number1<<endl;
cout<<"Hexadecimal:"<<hex<<setiosflags(ios::uppercase)<<number1<<endl;
cout<<"Octal:"<<oct<<number1<<endl;
cout<<number2<<endl;
};
ostream& operator <<(ostream &stream,triangle ob)
{int i,j,h,k;
i=j=ob.base-1;
for(h=ob.height-1;h;h--)
{ for(k=i;k;k--)
stream<<' ';
stream<<'*';
if(j!=i)
*s='\0';
found=true;
if(cin)
cin.putback(ch);
return found;
}
例题7:定义一个Dog类,包含体重和年龄两个数据成员及相应的成员函数。声明一个实例dog1,体重为5,年龄为10,使用I/O流把dog1的状态写入磁盘文件;再声明另一个实例dog2,通过读文件把dog1的状态赋给dog2。
8.对文件的操作
要在程序中使用文件,就要在程序的开始包含预处理命令:
#include <fstream.h>
对一般文件(主要是磁盘文件)的操作过程是:打开,读/写,关闭。
用户对标准I/O文件不需要进行打开/关闭,标准I/O文件函数分为以下三种:
(1)字符I/O函数 字符输入函数getchar ( )和字符输出函数putchar ( )。
第8章 C++的I/O系统
8.1 知识要点
1.C++语言的“流”是指信息从外部输入设备(如键盘、磁盘等)向计算机内部(内存)输入和从内存向外部输出设备(显示器、磁盘)输出的过程。这种输入输出过程被形象地比喻为“流”。
2.C++系统中的所有I/O类均包含在iostream.h、fstream.h、strstream.h这三个系统头文件中。
3.C++系统编译预处理时,要对# include命令进行“文件包含”处理,把该命令中指定的文件中的全部内容嵌入到该命令的位置,再编译整个C++文件,生成相应的目标代码程序。“文件包含”命令可以节省程序设计人员的重复劳动,也可以共享一些相同的程序段。
相关文档
最新文档