第15章 输入输出流和文件流

合集下载

实验6 标准设备与文件流的输入输出

实验6 标准设备与文件流的输入输出

实验6.1实验目的1.掌握文件流的打开、关闭及使用的使用方法2.理解文本文件流与二进制文件流在操作上的区别 6.2实验内容与步骤1.上机实验题一设计一个管理图书目的简单程序,提供的基本功能包括:可连续将新书存入文件“book.dat”中,新书信息加入到文件的尾部;也可以根据输入的书名进行查找;把文件“book.dat”中同书名的所有书显示出来。

为简单起见,描述一本书的信息包括:书号,书名,出版社和作者。

⑴分析 可以把描述一本书的信息定义为一个Book 类,它包含必要的成员函数。

把加入的新书总是加入到文件尾部,所以,以增补方式打开输出文件。

从文件中查找书时,总是从文件开始位置查找,以读方式打开文件。

用一个循环语句实现可连续地将新书加入文件或从文件中查找指定的书名。

由于是以一个Book 类的实例进行文件输入输出的,所以,这文件的类型应该是二进制文件。

简化的参考程序如下:#include <iostream.h> #include <string.h> #include <fstream.h> class Book { long int num;//书号 char bookname[40]; //书名 char publicname[40]; //出版社 char name[20];//作者public: Book() { num=0; bookname[0] =0;publicname[0] =0; name[0] =0;} char * Getbookname(void) { return bookname ;} long Getnum(void ) { return num;}void Setdata(long , char *,char *,char *);void Show(void );Book(long , char *,char *,char *);};void Book::Setdata(long nu , char *bn,char *p,char *n){num = nu; strcpy(bookname,bn);strcpy(publicname,p); strcpy(name,n);}void Book::Show(void ){cout<<"书号:"<<num<<'\t'<<"书名:"<<bookname<<'\t';cout<<"出版社:"<<publicname<<'\t'<<"作者:"<<name<<'\n';}Book::Book(long nu, char * bp,char *p,char *n){ Setdata(nu , bp, p, n); }void main(void){Book b1,b2;long nu;char bn[40]; //书名char pn[40]; //出版社char na[20]; //作者ifstream file1;ofstream file3;char flag = 'y';while( flag=='y' ||flag=='Y') { //由flag控制循环cout<<"\t\t 1: 按书名查找一本书!\n";cout<<"\t\t 2: 加入一本新书!\n";cout<<"\t\t 3: 退出!\n输入选择:";int f;cin>>f;switch(f){case 1:cout<<"输入要查找的书名:"; cin>>bn;file1.open("book.dat",ios::in | ios::binary);//按读方式打开文件while(!file1.eof() ){int n;file1.read((char *)&b1,sizeof(Book));实验n=file1.gcount(); if(n==sizeof(Book)){ if(strcmp(b1.Getbookname(),bn)==0) //显示书的信息 b1.Show(); } }file1.close();break; case 2: cout<<"输入书号:"; cin>>nu; cout<<"输入书名:"; cin>>bn; cout<<"输入出版社:"; cin>>pn; cout<<"输入作者:"; cin>>na;b1.Setdata(nu,bn,pn,na);file3.open("book.dat",ios::app|ios::binary);//增补方式打开文件file3.write((char*)&b1,sizeof(b1)); file3.close(); break;default: flag = 'n';} } }⑵上机要求修改程序增加按出版社、作者。

C语言中的输入输出流及其应用

C语言中的输入输出流及其应用

C语言中的输入输出流及其应用C语言是一种广泛应用于软件开发领域的编程语言,其提供了丰富的输入输出(I/O)函数和流(stream)的概念,以帮助开发者实现与用户或环境的交互。

本文将详细介绍C语言中的输入输出流及其应用。

一、输入流输入流用于接收外部数据供程序使用。

C语言提供了丰富的输入函数,包括:1. scanf函数:scanf函数用于从标准输入流(键盘)读取数据,并根据格式化字符串的指定将数据存储到指定的变量中。

例如:```cint age;scanf("%d", &age);```上述代码将从标准输入流读取一个整数,并将其存储到变量age中。

2. fgets函数:fgets函数用于从文件流或标准输入流中读取一行字符串并存储到指定的字符数组中。

例如:```cchar name[100];fgets(name, sizeof(name), stdin);```上述代码将从标准输入流读取一行字符串,并将其存储到字符数组name中。

二、输出流输出流用于向外部输出数据。

C语言提供了多种输出函数,包括:1. printf函数:printf函数用于向标准输出流(屏幕)输出格式化的数据。

例如:```cint num = 10;printf("The number is: %d\n", num);```上述代码将输出"The number is: 10"。

2. fputs函数:fputs函数用于向文件流或标准输出流中输出字符串。

例如:```cchar message[] = "Hello, world!";fputs(message, stdout);```上述代码将字符串"Hello, world!"输出到标准输出流。

三、文件流除了标准输入输出流外,C语言还支持文件流,用于读写文件。

文件流的操作需要使用文件指针,并且需要注意文件的打开和关闭。

第15章-系统分析

第15章-系统分析

MIS
入库业务流程图
采购员 (1)采购员交材料入库单; (1)采购员交材料入库单; 采购员交材料入库单 (2)库工查定货单,核实 (2)库工查定货单, 入库单; 入库单; 入库单 (3)材料入库,库工验收; (3)材料入库,库工验收; 订货单文件 复核 库工 (4) (4)库工填写交库单给采 购员, 购员,并把入库单存入文 件柜留底。 件柜留底。
交库单
合法入 库单
入库文件
材料入库验收
库工
MIS
材料出库业务的具体工作步骤为: 2. 材料出库业务的具体工作步骤为: (1)由领料人填写领料单; (1)由领料人填写领料单; (2)库工接收并复核领料单; (2)库工接收并复核领料单; (3)库工取出所领材料,发给领料人; (3)库工取出所领材料,发给领料人; (4)库工开发料单给领料人, (4)库工开发料单给领料人,并把领料单 存入文件柜留底。 存入文件柜留底。
MIS
组织结构调查分析 组织机构图: 组织机构图:
MIS
组织功能调查分析
1.功能(即业务过程 功能 即业务过程 即业务过程) 功能指的是完成某项工作的能力。 功能指的是完成某项工作的能力。为了实现系统目 系统必须具有各种功能。 标,系统必须具有各种功能。 各子系统功能的完成, 各子系统功能的完成,又依赖于下面更具体的工作 (业务流程 业务活动 的完成。 业务流程/业务活动 的完成。 业务流程 业务活动)的完成 2.组织功能描述工具 组织功能描述工具 业务功能一览表是一个完全以业务功能为主体的树 型表。 型表。 其目的在于描述组织内部各部分的功能。 其目的在于描述组织内部各部分的功能。
2.方法 方法
收集原系统全部输入单据(如入库单、收据、凭证)、输 收集原系统全部输入单据(如入库单、收据、凭证)、输 )、 出报表和数据存储介质(如账本、清单)的典型格式。 出报表和数据存储介质(如账本、清单)的典型格式。 通过对单据的分析,了解系统各业务的输入数据 输入数据、 通过对单据的分析,了解系统各业务的输入数据、处理过 输出数据以及数据存储。 以及数据存储 程、输出数据以及数据存储。 在上述各种单据、报表、账册的典型样品上注明各项数据 在上述各种单据、报表、账册的典型样品上注明各项数据 的类型(数字、字符)、长度、取值范围( )、长度 的类型(数字、字符)、长度、取值范围(指最大值和最 小值)。 小值)。

Java自学第10期——File类与IO流(输入输出流、处理流、转换流、缓冲流、Prope。。。

Java自学第10期——File类与IO流(输入输出流、处理流、转换流、缓冲流、Prope。。。

Java⾃学第10期——File类与IO流(输⼊输出流、处理流、转换流、缓冲流、Prope。

1、IO简介IO(输⼊输出)通过java.io包下的类和接⼝来⽀持,包下包括输⼊、输出两种IO流,每种输⼊输出流⼜可分为字符流和字节流两⼤类。

2、File类File类是io包下与平台⽆关的⽂件和⽬录,File能新建、删除、重命名⽂件和⽬录,不能访问⽂件本⾝,后者需要使⽤输⼊输⼊流。

2.1 构造⽅法File类的构造⽅法:File(File parent, String child) 参数:⽗路径,⼦路径根据 parent 抽象路径名和 child 路径名字符串创建⼀个新 File 实例。

File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建⼀个新 File 实例。

File(String parent, String child)根据 parent 路径名字符串和 child 路径名字符串创建⼀个新 File 实例。

File(URI uri)通过将给定的 file: URI 转换为⼀个抽象路径名来创建⼀个新的 File 实例。

2.2 静态⽅法File类静态⽅法:static String pathSeparator()与系统有关的路径分隔符,为了⽅便,它被表⽰为⼀个字符串。

static char pathSeparatorChar()与系统有关的路径分隔符。

static String separator()与系统有关的默认名称分隔符,为了⽅便,它被表⽰为⼀个字符串。

static char separatorChar()与系统有关的默认名称分隔符。

2.3 常⽤⽅法:2.3.1 获取相关public String getAbsolutePath()返回此File的绝对路径名字符串。

public String getPath()将此File转换为路径名字符串。

public String getName()返回由此File表⽰的⽂件或⽬录的名称。

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为输入格式。

拓展知识9-1 标准输入输出设备文件和流

拓展知识9-1 标准输入输出设备文件和流

拓展知识9-1 标准I/O设备文件和流C程序中经常有大量对文件的输入输出操作,它构成了程序的重要部分,因而C语言提供了很多输入输出的函数,用于两种类型文件输入输出系统:即由ANSI标准定义的缓冲文件系统(也称标准文件(流)输入输出(I/O)系统);另一类是ANSI标准中没有定义的非缓冲文件系统(也称非标准文件(流)输入输出(I/O)系统)。

我们已经熟悉了通过键盘和显示器进行输入输出的一些函数,如scanf,printf 等等,这些通过控制台(键盘、显示器等)进行I/O的操作,可以看作标准文件输入输出系统的一些特例。

任何C程序执行时,系统都定义了5个标准设备文件供使用。

系统自动打开的5个标准设备文件为:键盘(标准输入)stdin 0显示器(标准输出)stdout 1显示器(标准错误)stderr 2串行口(标准辅助)stdoux 3打印机(标准打印)stdprn 4在C中可将数据的输入输出看作是数据的流入和流出,这样不管是普通(磁盘)文件或者是物理设备(打印机、显示器、键盘等),都可看作一种流的源和目的,视他们为同一种东西,而不管其具体的物理结构,即对他们的操作,就是数据的流入和流出。

这种把数据的输入输出操作,抽象化为一种流,而不管它的具体结构的方法很有利于编程,而涉及流的输入输出操作函数可用于各种对象,与其具体的实体无关,即具有通用性。

在C语言中流可分为两大类,即文本流(text stream)和二进制流(binary stream)。

所谓文本流是指在流中流动的数据是以字符形式出现。

在文本流中,'\n'被换成回车CR和换行LF的代码0DH和0AH。

而当输出时,则0DH和0AH被换成'\n'。

二进制流是指流动的是二进制数字序列,若流中有字符,则用一个字节的二进制ASCII码表示,若是数字,则用一个字节的二进制数表示。

在流入流出时,对\n符号不进行变换。

【示例】2001这个数,在文本流中用其ASCII码表示为:50 48 48 49共占4字节。

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是格式控制字符串,...是要写入的变量。

输入输出流

输入输出流
*/
public class Files
{
public static void main(String[] args) throws IOException
{
Files f = new Files();
// System.out.println(f.readFile("f:\\LinkFile.java"));
}
}
}
/**
* 检查文件中是否为一个空
* @param filePath
* @param fileName
* @return 为空返回true
* @throws IOException
*/
public boolean fileIsNull(String filePath,String fileName) throws IOException
for(int i=0;i<ss.length;i++)
{
ss[i] = "信息技术和互联网(计算机软硬件,通讯) "+i;
}
f.writeFile("f:\\ss\\","TestFile.txt",ss);
}
/**
* 文件的写入
* @param filePath(文件路径)
/**
* @author zhangqinglin
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments

输入和输出处理PPT课件

输入和输出处理PPT课件
• 1. 生成流对象 • 2. 读入/写出字符
第8页/共23页
FileReader和FileWriter类 由于InputStreamReader和OutputStreamWriter字符流类在创建
流类的对象时必须以一个字节流作为原始的数据流来打开文件。为了能够 直接将一个具体的文件名的文件直接转换为字符流类的对象,在java.io 包中还为程序员提供了InputStreamReader和OutputStreamWriter字 符 流 类 的 两 个 子 类 F i l e Re a d e r 和 F i l e W r i t e r.
第13页/共23页
FileInputStream类
• 下列3种方法可创建FileInputStream对象: FileInputStream(File file) FileInputStream(FileDescription fdObj) FileInputStream(String name) • 在读文件时有几个必要流程如下: 使用文件输入流读取文件夹 处理I/O异常 从输入流中读取字节 关闭流
• 2. 读入和写出字符 • 3. 获取当前编码方式 • 4. 关闭流
第7页/共23页
BufferedReader和BufferedWriter • 为提高字符流的处理效率,可以采用缓冲机制。JDK引入了 BufferedReader和BufferedWriter类,用来对字符流进行成批的处理。 其中的方法readLine()是读出一行字符,而newLine()则是写入一行字符, 由于提供缓冲机制,把任意的输入流或输出流“捆绑”到缓冲流上将获得 性能的提高,同时也可以在创建缓冲流对象进设置缓冲区的大小。
第21页/共23页
串行化的注意事项

(完整版)第十五章习题※答案

(完整版)第十五章习题※答案

{一、填空题1. _________________________________ 所有字节流类的基类是 、 ( InputStream OutputStream )2. _________________________________ 所有字符流类的基类是 、 ( Reader Writer )3.InputStream 类以 ___________ 为信息的基本单位(字节)4. Reader 类以 ___________ 为信息的基本单位(字符)5. _________ 类用以处理文件和路径问题( File )6. Java 中标准输入输出流对象是: _________________ 、 ____________ 、 __________ (System 」nSystem.out System.err )7.System.in 的类型是 ___________ (InputStream )8.System.out 的类型是 _______________ ( PrinterStream ) 二、选择题1. 以下选项中属于字节流的是( A ) A ) FileInputSream B ) FileWriter C ) FileReader D ) PrintWriter2. 以下选项中不属于 File 类能够实现的功能的是( D )A )建立文件B )建立目录C )获取文件属性D )读取文件内容3. 以下选项中哪个类是所有输入字节流的基类( A )A ) InputStreamB ) OutputStreamC ) ReaderD ) Writer 4. 以下选项中哪个类是所有输出字符流的基类(D )A ) InputStreamB ) OutputStreamC ) ReaderD ) Writer5. 下列选项中能独立完成外部文件数据读取操作的流类是( B ) A ) InputStream B ) FileInputStreamC ) FilterInputStreamD ) DataInputStream6. 下列选项中能独立完成外部文件数据读取操作的流类是(B )A ) ReaderB ) FileReaderC ) BufferedReaderD ) ReaderInputStream 7. 在建立 FileInputStream 流对象时可能会产生下列哪种类型的异常( B ) A ) ClassNotFoundException B ) FileNotFoundException C ) RuntimeException D ) AWTException8. 在使用 FileInputStream 流对象的 read 方法读取数据时可能会产生下列哪种类型的异常 ( D )A ) ClassNotFoundExceptionB ) FileNotFoundExceptionC ) RuntimeExceptionD ) IOException三、程序设计题 1编写应用程序,使用 System.i n.read()方法读取用户从键盘输入的字节数据,回车后,把从键盘输入的数据存放到数组 buffer 中 ,并将用户输入的数据通过System.out.print() 显示在屏幕上。

输入输出流(带仓库系统作业)

输入输出流(带仓库系统作业)
Linux/Unix上,为“/”, File 提供的参数: File.separator) 2. public File(String Directory, String s);
4
2.2 查询文件属性
File 类提供了几个方法, 查询文件属性: – 文件是否存在 – 文件是否读保护 – 文件是否写保护 – 文件是否是一个目录 – 文件是否隐藏
myFileStream = new FileInputStream(myFile);
8
3.2 处理 I/O 异常
必须使用catch 块检测并处理I/O 异常( IOException ), 如: try {
FileInputStream ins=
new FileInputStream (“myfile.dat"); } catch (IOException e) {
//文件I/O 错误 System.out.println(“File read error: ” +e); }
9
3.3 从 FileInputStream中读出
read() 的成员函数 : int read() //读取一个字节
//到达输入流末尾时, 返回-1 int read(byte b[]) //把多个字节读到字节数组中
Attr.java
6
3. FileInputStream
FileInputStream典 型 地 表 示 一 种 顺 序 访 问 的 文 本 文 件。 通过 使 用FileInputStream 你 可 以 访 问 文 件 的 一 个 字 节、 几 个 字 节或 整 个 文 件。
由InputStream 派生的类
String(buffer,0,b,"Default"); System.out.println(str); }catch(UnsupportedEncodingException e) { System.out.println("the encoding was not found: "+e); } }catch (IOException e) { System.out.println("File read Error"); }

C++文件输入输出流

C++文件输入输出流

C++文件输入输出流文件操作在操作系统的底层中十分复杂。

然而,C++已经为我们做了文件操作的绝大部分工作。

程序员只要以流的概念来实施文件操作即可。

文件有两种,一种是文本文件,其内容总是与字符码表(如ASCII码)对应。

另一种是二进制文件,可以将内容看成0/1串。

本次课我们只讨论C++中文本文件的读写。

一、文件输入流类ifstreamI ifstream是文件输入流类的类名。

定义一个该类的对象,即可将该对象和一个文件建立联系。

例如,ifstream fin(“a.txt”)表示定义一个文件输入流类的对象fin,并将该对象与当前目录下的a.txt文件建立联系,以后可以用该对象从a.txt中读取数据。

【例1 按行读取一个文本文件的所有内容,并输出到屏幕。

】#include <iostream>#include <fstream> //使用ifstream类需要包含头文件fstream#include <string> //使用string类需要包含头文件stringusing namespace std;int main(){ifstream fin("in.txt"); //默认打开文本文件string str;while (getline(fin, str)){cout<<str<<endl;}return 0;}getline(fin, str)表示从输入文件流中读入一行数据,放入string类型的变量str 中。

由于整行整行地读入,读入到str中时,文件中的每个换行符都被丢掉了。

为了照文件原样输出,在cout流上输出str的同时,还要再补上一个回车符。

许多输入/输出语句都能返回操作状态(true或false),例如if (cin>>a)cout<<a; //若读入失败,则跳过cout<<a;if (getline(in, str)cout<<str; //若读入失败,则跳过cout<<str;if (cin)cin>>a; //若文件流状态正常,则输入所以在循环读入数据时,常常将读入操作放在循环的条件判断上,这样既省事,又明白。

第15章 文件的输入输出

第15章   文件的输入输出

文件字节输入输出流是FileInputStream和FileOutStream,这 是InputStream和OutputStream的子类。使用这两个类就可以 将从一个指定的文件中读取或者向某一个文件中写入数据。 如果创建FileInputStream或者是FileOutputStream对象实例, 必须要指定文件的路径和文件名,对象被创建之后,流就会 被打开。程序的结尾如果不再使用流操作,必须要关闭流, 以释放资源。
15.4.2 字符输入、输出流 字符输入、
可以使用Reader和Writer的子类InputStreamReader和 OutputStreamWriter来进行字符的处理,也就是按照字符 为基本单位进行读写操作,并且可以实现字符流和字节流 之间的转化,字符流操作比字节流效率要高。 使用InputStream和OutputStream对象为构造方法的参数 创建InputStreamReader和OutputStreamWriter变量可以 直接读取文本,而不需要自己再判断字符编码。
15.5.4 RandomAccessFile应用 应用
RandomAccessFile类在随机(相对顺序而言)读写等长记 录格式的文件时有很大的优势,如读取数据库中的某一条 记录时。但是RandomAccessFile类仅限于操作文件,不 能访问其他的IO设备,如网络,内存映象等。
学习如何读取和写入数据之前,首先需要了解一个文件操 作的工具类File类,该类既可以处理数据文件也可以处理 目录,并且通过该类可以列出File实例所代表的目录下所 有的文件名。在处理一个目录之前,首先要做的就是创建 一个File的实例用于表示该目录。语法如下: File file=new File(“src”);
符流支持Unicode标准字符集,如果进行文本读写,通 常要使用Reader和Writer的子类时要重新定义相关的方法 。而Reader和Writer只提供了用于字符流处理的接口,而 不能生成实例。只可以通过他们的子类对象来处理字符流 。 Reader是Java语言中字符输入流所有类的父类,该类是抽 象类,不能被实例化。

C++中输入输出流及文件流操作总结

C++中输入输出流及文件流操作总结

C++中输⼊输出流及⽂件流操作总结本⽂实例为⼤家分享了C++中输⼊输出流及⽂件流操作笔记,供⼤家参考,具体内容如下1、流的控制iomanip 在使⽤格式化I/O时应包含此头⽂件。

stdiostream ⽤于混合使⽤C和C + +的I/O机制时,例如想将C程序转变为C++程序2、类继承关系ios是抽象基类,由它派⽣出istream类和ostream类, iostream类⽀持输⼊输出操作,iostream类是从istream类和ostream类通过多重继承⽽派⽣的类类ifstream继承了类istream,类ofstream继承了类ostream,类fstream继承了类iostreamiostream头⽂件中4种流对象cout补充1、⽤“cout<<”输出基本类型的数据时,可以不必考虑数据是什么类型,系统会判断数据的类型并根据其类型选择调⽤与之匹配的运算符重载函数。

这个过程都是⾃动的,⽤户不必⼲预。

如果在C语⾔中⽤prinf函数输出不同类型的数据,必须分别指定相应的输出格式符,⼗分⿇烦,⽽且容易出错2、cout流在内存中对应开辟了⼀个缓冲区,⽤来存放流中的数据,当向cout流插⼈⼀个endl时,不论缓冲区是否已满,都⽴即输出流中所有数据,然后插⼊⼀个换⾏符,并刷新流(清空缓冲区)。

注意如果插⼈⼀个换⾏符”\n“(如cout<<a<<"\n"),则只输出和换⾏,⽽不刷新cout 流(但并不是所有编译系统都体现出这⼀区别)。

3、在iostream中只对"<<"和">>"运算符⽤于标准类型数据的输⼊输出进⾏了重载,但未对⽤户声明的类型数据的输⼊输出进⾏重载。

如果⽤户声明了新的类型,并希望⽤"<<"和">>"运算符对其进⾏输⼊输出,按照重运算符重载来做。

文件流类与文件流对象

文件流类与文件流对象

文件流类与文件流对象文件流是以外存文件为输入输出对象的数据流。

输出文件流是从内存流向外存文件的数据,输入文件流是从外存文件流向内存的数据。

每一个文件流都有一个内存缓冲区与之对应。

请区分文件流与文件的概念。

文件流本身不是文件,而只是以文件为输入输出对象的流。

若要对磁盘文件输入输出,就必须通过文件流来实现。

在C++的I/O类库中定义了几种文件类,专门用于对磁盘文件的输入输出操作除了标准输入输出流类istream,ostream和iostream类外,还有3个用于文件操作的文件类:(1) ifstream类,它是从istream类派生的。

用来支持从磁盘文件的输入。

(2) ofstream类,它是从ostream类派生的。

用来支持向磁盘文件的输出。

(3) fstream类,它是从iostream类派生的。

用来支持对磁盘文件的输入输出。

要以磁盘文件为对象进行输入输出,必须定义一个文件流类的对象,通过文件流对象将数据从内存输出到磁盘文件,或者通过文件流对象从磁盘文件将数据输入到内存。

其实在用标准设备为对象的输入输出中,也是要定义流对象的,如cin,cout就是流对象,C++是通过流对象进行输入输出的。

由于cin,cout已在iostream.h中事先定义,所以用户不需自己定义。

在用磁盘文件时,由于情况各异,无法事先统一定义,必须由用户自己定义。

此外,对磁盘文件的操作是通过文件流对象(而不是cin和cout)实现的。

文件流对象是用文件流类定义的,而不是用istream和ostream类来定义的。

可以用下面的方法建立一个输出文件流对象: ofstream outfile;现在在程序中定义了outfile为ofstream类(输出文件流类)的对象。

但是有一个问题还未解决: 在定义cout 时已将它和标准输出设备建立关联,而现在虽然建立了一个输出文件流对象,但是还未指定它向哪一个磁盘文件输出,需要在使用时加以指定。

输入流与输出流

输入流与输出流
1
第八章 输入与输出流
键盘 程序
数据文件
屏幕 数据文件
综上所述,程序是数据处理中心。 无论是从键盘上读取数据或者从数据文件中读取数据都是由程序决定的。 把程序中的数据输出到屏幕上或者输出到数据文件中都是由程序决定的。
2
第八章 输入与输出流
8.1 流的概念
❖ 输入与输出流(I/O流) (1)输入流:把键盘上输入的数据或者是把数据文件中的数据 读入正在运行的程序中。(网络) (2)输出流:把正在运行的程序中的数据输出到屏幕上或者 输出到数据文件中。
5
第八章 输入与输出流
8.1 流的概念
❖ 字符流类:专门用于字符数据 ❖ 字节流类:用于一般目的
6
10.1 File类
首先讨论10.1.3节的内容,如何使用File类创建对象。对象可以是文件对象, 也可以是目录对象。
(1) 使用一个存在的文件创建一个文件对象;10.1.3 File f=new File("Example10_1.java"); 当前目录下已经存在文件: Example10_1.java
write方法的格式如下: public void write(byte b[]); public void write(byte b[],int off,int len);
作为字节流输入对象的文件,采用read方法按节读入到程序中;
作为字节流输出对象的文件,采用write方法按字节把程序的数据输出到字节 流输出对象的文件中;
10
第八章 输入与输出流
§10.1.4 使用Runtime 类运行可执行文件
◆用Runtime 类声明一个对象( Runtime类在ng包) Runtime ec;
◆ 然后使用该类的getRuntime()静态方法创建这个对象: ec=Runtime.getRuntime();
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//创建输出文件流对象
//设置每个数字 10 个字节宽 //每 5 个数字一行
//关闭文件流
读取文件可以使用ifstream类型的对象,其格式为:
const char * pFile = “data.txt”;
ifstream infile(pFile);
//对象与文件关联
1、调用ifstream对象的成员函数is_open(),如果文件已经 打开,返回true,否则返回false。
int value; cin>>value;
15a↙ A15↙
//只读取有效数据 1 和 5,最后将 1 和 5 转换为整数类型 15 //由于 A 不是有效数据,那么提取操作符将不会提取数据
在C++中,有3种流类对象可以用来处理文件: ifstream、ofstream以及fstream。
首先需要创建ofstream类的对象,其格式如下:
2、读取ios类中的fail()的返回值,如果文件发生错误,该 函数就返回true。
3、对流对象进行!运算符操作,可以用来检测在该类中定义 的流状态指示符。该方法等价于使用fail()函数。
strstream文件中包含如下类:strstreambuf、istrstream、 ostrstream、strstream
//显示 16 进制基数表示
//显示字符数组中的内容 //释放内存空间
strstream文件中包含如下类:istringstream、ostringstream、 stringbuf、stringstream
01 #include<iostream>
02 #include<sstream>
03 using namespace std;
ofstream file(“filename”);
//创建写入文件对象
01 ofstream ofile(".\\data.txt");
02
for(int i=1;i<=10;i++)
03
{
04
ofile<<s etw(10)<<i;
05
if(i%5==0)
06
ofile<<endl;
07
}
08
ofile.clos e();
cout.put('\n');
08
cout.write(ps tr,5);
09
cout.write(ps tr+5,6);
10
cout<<endl;
11
cout.write("happy" , 5);
12 13 }
cout<<endl;
编译、运行上述程序得到如下结果:
Am F Hello world
01 #include<iostream>
02 #include<strstream>
03 using namespace std;
04 int main()
05 {
06
int arraylen = 100;
07
char *parray = new char[arraylen];
08
ostrstream ostr(parray, arraylen , ios::out);
利用ostream提供的方法,打印输出数据。
01 #include<iostream> 02 using namespace std;
03 void main()
04 {
05
char *pstr = "Hello world";
06
cout.put('A').put('m ').put(70);
07
//实现基本数据的写入 }
要想实现从流中读取对象,只需要重载 operator>>()函数即可。
istream& operator>>(istream& in , student& stu); {
in>>s tu.nam e>>stu.grade >>stu.age>>stu.s ex; }
输入和输出流 文件流 字符串流 对象和流
C++专门设计实现、管理流的类,这些类主要包 含在iostream文件中。
标准输出流cout(或是wcout)在iostream文件中的定义如下:
extern ostream cout; //或者 extern wostream wcout;
//定义窄字节流对象 //定义宽字节流对象
happy
//定义字符串指针,并初始化 //利用 put()函数输出字符 //换行 //输出字符串
//输出字符串
标准输入流在iostream文件中的定义如下:
extern istream cin; extern wistream wcin
//定义窄字节流对象 //定义宽字节流对象
cin>>value;
12
s s tr>>a;
//提取流中的数据
13
s s tr>>d;
14
cout<<"a = "<<a<<"\t"
15
<<"d = "<<d<<endl;
16
return 0;
17 }
想要实现将对象写入流中,只需要实现重载 operator<<()运算符
ostream& operator<<(ostream &out , const classname & name) {
04 int main()
05 { 06 07
stringstream sstr; double d = 10.5;
//定义字符串流对象 //定义浮点类型变量
08
int a = 100;
09
sstr<<d<<" ";
//将数据写入流中
10
sstr<<a<<" ";
//将数据写入流中
11
cout<<sstr.str().c_str()<<endl; //将流中的数据打印输出
09
ostr<<"hello"<<" ";
10
ostr<<50.5<<" ";
11
os tr.s etf(ios ::s howbase);
12
os tr<<hex<<100<<ends ;
13
ቤተ መጻሕፍቲ ባይዱ
cout<<parray<<endl;
14
delete []parray;
15
return 0;
16 }
//动态申请内存空间 //定义输出流的对象 //将数据写入输出流
相关文档
最新文档