输入输出流及其使用

输入输出流及其使用
输入输出流及其使用

输入输出流及其使用

(教学内容)

一、任务描述

素数。文件如图所示。

二、任务相关知识

输入输出流iostream 及其常用流状态:

使用iostream输入输出流进行输入输出操作,需要包含头文件”#include

流状态中的left/right dec/oct/hex/ fixed/scientific 这些状态是相互独立的,设置了此,就取消了彼。取消流状态的操作一般为:noshowpos, noshowbase, no uppercase, noshowpoint, noboolalpha 等,也可以通过cout捆绑方式来取消:cout.unsetf( ios :: scientific) 。另外,还有带参数的三个常用的流状态:width( int )---设置显示宽度;fill( char )---设置填充字符;precision( int )—设置有效数位。他们也可以与<<连用:setw( int )/setfill( char )/setpercision( int ), 但需要进行文件包含:#include

文件流:

利用文件流的对象来对文件进行操作:

ifstream fin( filename, openmode = ios::in );//把文件作为输入流 ofstream fout( filename, openmode = ios::out );//把文件作为输出流

筛法判断素数:

从2开始的某个连续整数集合,留下2,除去2的所有倍数;留下3,除去所有3的倍数;留下5,除去5的所有倍数,如些等等。留下某个最先遇到的素数,将其所有的倍数从数集中除去,最后,剩下的就全是素数了。接下来要判断一个数是否为素数,可以在求出的素数集合中搜索这个数,如搜索到,则为素数,否则不是。

三、任务实现步骤

1. 文件包含( 为了使用文件流及输入输出流 ):

#include ; //using input output

#include ; // using file iostream #include ; //using vector

2. 定义10000个元素且值为1的向量,用来构造素数集合:

vector prime(10000,1);

for(int i=2; i<100; ++i) // 构造素数集合 if(prime[i])

for(int j=i; i*j<10000; ++j) prime[i*j]=0;

3.

使用文件流把包含数据的文件(a.txt )作为输入流:

ifstream in("a.txt");

4. 利用搜索判断是否为素数:

for(int a; in>>a && a>1 && a<10000; ) // 判断素数 cout<

四、技能训练:

1.编写程序,打印9*9乘法表,如图所示:

2.有一些日期,在文件abc.txt 中,后面加*号的表示要加班的日期,试汇总所有每个月25号的天数,如果是加班日,则该天乘2;

3

五、能力评价

六、课外思考与练习

编程实现:

1) 从文件abc.txt 中读入数据到整数向量中;

2) 文件中的内容为:12 567 91 33 657 812 2221 3 77;

3) 以该向量为参数,将该整数向量中的数据按各位数字之平方和的大小排序; 4) 设计一个函数,以该向量为参数,以每个元素空一格的格式在屏幕上输出; 5) 编程实现读入向量,若无元素,则仅输出元素个数;否则,排序输出该向量。

Java 输入输出流及文件读写详解

I/O类体系 在JDK API中,基础的IO类都位于java.io包,而新实现的IO类则位于一系列以java.nio开头的包名中,这里首先介绍java.io包中类的体系结构。 按照前面的说明,流是有方向的,则整个流的结构按照流的方向可以划分为两类: 1、输入流: 该类流将外部数据源的数据转换为流,程序通过读取该类流中的数据,完成对于外部数据源中数据的读入。 2、输出流: 该类流完成将流中的数据转换到对应的数据源中,程序通过向该类流中写入数据,完成将数据写入到对应的外部数据源中。 而在实际实现时,由于JDK API历史的原因,在java.io包中又实现了两类流:字节流(byte stream)和字符流(char stream)。这两种流实现的是流中数据序列的单位,在字节流中,数据序列以byte为单位,也就是流中的数据按照一个byte一个byte的顺序实现成流,对于该类流操作的基本单位是一个byte,而对于字节流,数据序列以char为单位,也就是流中的数据按照一个char一个插入的顺序实现成流,对于该类流操作的基本单位是一个char。 另外字节流是从JDK1.0开始加入到API中的,而字符流则是从JDK1.1开始才加入到API中的,对于现在使用的JDK版本来说,这两类流都包含在API的内部。在实际使用时,字符流的效率要比字节流高一些。 在实际使用时,字符流中的类基本上和字节流中的类对应,所以在开始学习IO类时,可以从最基础的字节流开始学习。 在SUN设计JDK的IO类时,按照以上的分类,为每个系列的类设计了一个父类,而实现具体操作的类都作为该系列类的子类,则IO类设计时的四个体系中每个体系中对应的父类分别是: 字节输入流InputStream 该类是IO编程中所有字节输入流的父类,熟悉该类的使用将对使用字节输入流产生很大的帮助,下面做一下详细的介绍。 按照前面介绍的流的概念,字节输入流完成的是按照字节形式构造读取数据的输入流的结构,每个该类的对象就是一个实际的输入流,在构造时由API完成将外部数据源转换为流对象的操作,这种转换对程序员来说是透明的。在程序使用时,程序员只需要读取该流对象,就可以完成对于外部数据的读取了。

Microsoft Word - 输入输出流类库编程练习题 - 首都

注意:每道题的难度等级不同,*越多,难度等级越高。可以根据自己的能力,选做恰当难度的题。 8.1改写第五章编程练习5.4题的程序,使该程序在程序结束之前,先判断字典内容是否发 生了变化(单词的添加、修改、删除)。如果字典内容已经被修改,则提示是否保存修改后的新字典;若选择保存,则将字典的全部内容写入一个纯文本文件,该文件可以命名为dictionary.txt。每次程序重新运行时,先尝试打开dictionary.txt。如果该文件存在,则打开文件,并从该文本文件中输入产生一个字典。 难度等级:** 8.2编写一个用于统计英文纯文本文件的各项信息:文件内容的总字符数(包括标点符号), 单词个数,文本行数。 要求: 1.提示用户输入一个扩展名为.txt的纯文本文件名,如果指定文件存在,则打开该文 件,否则显示错误提示信息。 2.统计文件内容的上述信息,并显示所统计的信息。信息的显示格式自行确定,例如 可以按如下格式显示: 文件名:Information.txt 字符数:4854 单词数:853 文本行数:56 3.每个文件的信息显示后,提示用户是否继续统计其他文本文件,如果继续,则重复 1和2中的操作。 提示: 1.判断文本行的依据可以是每行的结尾应为‘\n’。 难度等级:*

8.3编写一个程序用于某大学的某信息专业学生的基础课成绩的录入、显示和相应数据文件 的读写。 要求: 1.成绩的按如下顺序录入: ⑴在学生成绩录入之前,先通过输入确定基础课程的门数和课程名称。例如: 基础课程1:高等数学 基础课程2:大学物理 基础课程3:大学英语 基础课程4:C语言程序设计 基础课程5:数据结构 … ⑵每个学生的成绩录入的内容包括学生的姓名、学号、性别和各门课程的成绩。成 绩按照A,B,C,D四个等级划分。录入格式可以参照如下: 姓名:李建国 学号:200410001 性别:男 高等数学:C 大学物理:B 大学英语:C C语言程序设计:B 数据结构:A … 2.保存学生成绩数据的文件的种类和结构、内容如下 ⑴课程信息索引文件courses.inx用于保存所有课程的索引信息,每门课程的索 引信息由课程索引序号和课程名组成。例如: 课程序号课程名 1高等数学 2大学物理 3大学英语 4C语言程序设计 5数据结构 … 注意,课程门数不得少于5门。 ⑵学生信息文件student.inx用于保存所有学生的索引信息,每个学生的索引信息 由学号和学生基本信息(姓名、性别)组成。例如: 学生学号学生基本信息 200410001李建国,男 … ⑶分课程成绩数据索引文件XXX.inx用于保存一门课程的所有学生成绩的索引信 息,每个学生的成绩索引信息由学号和成绩等级组成。每门课程有一个成绩数据 索引文件,文件名XXX由课程名确定。例如: 文件名:“高等数学.inx” 学生学号成绩等级 200410001C

第9章输入输出流与文件操作

什么是流?流有什么用?面向对象语言为什么需要流?哪些场合需要流? 答:流是指一组有顺序、有起点和终点地字节集合,是对数据传输地总称或抽象(也就是数据在两个对象之间地传输称为流).个人收集整理勿做商业用途 流地作用就是使数据传输操作独立于相关设备. 在面向对象地程序设计中,数据地传输和流动具有广泛性,可以在内存与外部设备之间传输,还可以从内存到内存,甚至可以从一台计算机通过网络流向另一台计算机等,故面向对象语言采用流机制.个人收集整理勿做商业用途 在标准输入输出、在文件地读写等操作中都需要流. 提供了哪些流类?各种流类之间地关系是怎样地?什么场合需要使用什么流类? 答:中按照流地方向性,流分为输入流和输出流两大类.按照流中元素地基本类型,流分为字节流和字符流两大类.字节流类按照流地方向分为字节输入流类和字节输出流类,字符流类方向性分为字符输入流类和字符输出流类.以及文件操作类,随机存取文件类.个人收集整理勿做商业用途 其中类是所有字节输入流地根类,类是所有字节输出流地根类;类是所有字符输入流地根类,类是所有字符输出流地根类.个人收集整理勿做商业用途 操作系统中文件和目录概念是怎么样地?提供了哪些对文件和目录操作地类?程序中对文件和目录能够进行哪些操作?如何操作?个人收集整理勿做商业用途 答:文件是信息地一种组织形式,是存储在外部存储介质上地具有标识名地一组相关地信息集合.目录是文件系统组织和管理文件地基本单位,保存它所管理地每个文件地基本属性信息(称为文件目录项或文件控制块).个人收集整理勿做商业用途 直接对文件地顺序存取和随机存取操作,提供了类记载文件属性信息,对文件读写操作时以流地形式.类以随机存取方式进行文件读写操作.但在对文件操作过程中还需要使用文件过滤器接口和文件对话框类.在操作系统中,目录也是以文件地形式保存地,称为目录文件.故一个对象也可以表示一个目录.个人收集整理勿做商业用途 可以对文件进行读、写、删除、创建等操作,对目录可以读取、创建、删除等操作.应用程序通过调用操作系统提供地系统调用能够对文件及目录进行各种操作.个人收集整理勿做商业用途 再打开、保存、复制文件时,需要读写文件中地数据内容,这些操作由流实现,不同类型地文件需要使用不同地流泪.个人收集整理勿做商业用途 流与文件操作有什么关系?实际应用中将流类与文件操作结合起来能够实现哪些复杂问题?如何实现?个人收集整理勿做商业用途 答:对文件地操作时通过流这个工具进行地.再打开、保存、复制文件时,需要读写文件中地数据内容,这些操作由流实现,不同类型地文件需要使用不同地流泪.个人收集整理勿做商业用途 什么是输入输出?什么是标准输入输出?怎样实现标准输入输出功能? 答:数据由外部设备流向内存,这个过程称为输入;数据有内存流向外部设备,这个过程称为输出. 在计算机系统中,标准输入是从键盘等外部输入设备中获得数据,标准输出是向显示器或打印机等外部输出设备发送数据.个人收集整理勿做商业用途 在类中声明了个常量、和用于实现标准输入输出功能.个人收集整理勿做商业用途除了标准输入输出及文件操作之外,还有那些应用中需要使用流? 答:在面向对象地程序设计中,数据地传输和流动具有广泛性,不仅可以在内存与外部设备之间传输,还可以从内存流向内存,甚至可以从一台计算机通过网络流向另一台计算机,因此各种不同地数据源地传输都需要采取不同地流机制来实现.个人收集整理勿做商业用途

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

文件流是以外存文件为输入输出对象的数据流,字符串流不是以外存文件为输入输出的对象,而以内存中用户定义的字符数组(字符串)为输入输出的对象,即将数据输出到内存中的字符数组,或者从字符数组(字符串)将数据读入。字符串流也称为内存流。 字符串流也有相应的缓冲区,开始时流缓冲区是空的。如果向字符数组存入数据,随着向流插入数据,流缓冲区中的数据不断增加,待缓冲区满了(或遇换行符),一起存入字符数组。如果是从字符数组读数据,先将字符数组中的数据送到流缓冲区,然后从缓冲区中提取数据赋给有关变量。 在字符数组中可以存放字符,也可以存放整数、浮点数以及其他类型的数据。在向字符数组存入数据之前,要先将数据从二进制形式转换为ASCII代码,然后存放在缓冲区,再从缓冲区送到字符数组。从字符数组读数据时,先将字符数组中的数据送到缓冲区,在赋给变量前要先将ASCII代码转换为二进制形式。总之,流缓冲区中的数据格式与字符数组相同。这种情况与以标准设备(键盘和显示器)为对象的输入输出是类似的,键盘和显示器都是按字符形式输入输出的设备,内存中的数据在输出到显示器之前,先要转换为ASCII码形式,并送到输出缓冲区中。从键盘输入的数据以ASCII码形式输入到输入缓冲区,在赋给变量前转换为相应变量类型的二进制形式,然后赋给变量。对于字符串流的输入输出的情况,如不清楚,可以从对标准设备的输入输出中得到启发。 文件流类有ifstream,ofstream和fstream,而字符串流类有istrstream,ostrstream和strstream。文件流类和字符串流类都是ostream,istream和iostream类的派生类,因此对它们的操作方法是基本相同的。向内存中的一个字符数组写数据就如同向文件写数据一样,但有3点不同: 1. 输出时数据不是流向外存文件,而是流向内存中的一个存储空间。输入时从内存中的存储空间读取数据。在严格的意义上 说,这不属于输入输出,称为读写比较合适。因为输入输出一般指的是在计算机内存与计算机外的文件(外部设备也视为文件)之间的数据传送。但由于C++的字符串流采用了C++的流输入输出机制,因此往往也用输入和输出来表述读写操作。 2. 字符串流对象关联的不是文件,而是内存中的一个字符数组,因此不需要打开和关闭文件。 3. 每个文件的最后都有一个文件结束符,表示文件的结束。而字符串流所关联的字符数组中没有相应的结束标志,用户要指定 一个特殊字符作为结束符,在向字符数组写入全部数据后要写入此字符。 字符串流类没有open成员函数,因此要在建立字符串流对象时通过给定参数来确立字符串流与字符数组的关联。即通过调用构造函数来解决此问题。建立字符串流对象的方法与含义如下。 建立输出字符串流对象 ostrstream类提供的构造函数的原型为: ostrstream::ostrstream(char *buffer,int n,int mode=ios::out); buffer是指向字符数组首元素的指针,n为指定的流缓冲区的大小(一般选与字符数组的大小相同,也可以不同),第3个参数是可选的,默认为ios::out方式。可以用以下语句建立输出字符串流对象并与字符数组建立关联: ostrstream strout(ch1,20); 作用是建立输出字符串流对象strout,并使strout与字符数组ch1关联(通过字符串流将数据输出到字符数组ch1),流缓冲区大小为20。 建立输入字符串流对象 istrstream类提供了两个带参的构造函数,原型为: istrstream::istrstream(char *buffer); istrstream::istrstream(char *buffer,int n); buffer是指向字符数组首元素的指针,用它来初始化流对象(使流对象与字符数组建立关联)。可以用以下语句建立输入字符串流对象: istrstream strin(ch2); 作用是建立输入字符串流对象strin,将字符数组ch2中的全部数据作为输入字符串流的内容。 istrstream strin(ch2,20); 流缓冲区大小为20,因此只将字符数组ch2中的,20个字符作为输入字符串流的内容。 建立输入输出字符串流对象 strstream类提供的构造函数的原型为: strstream::strstream(char *buffer,int n,int mode); 可以用以下语句建立输入输出字符串流对象:

java输入输出流和文件操作

Java IO流和文件操作Java流操作有关的类或接口: Java流类图结构:

1、File类 File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹。 File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。 构造方法摘要 File(File parent, String child) File(String pathname) File(String parent, String child) 构造函数 创建方法 1.boolean createNewFile() 不存在返回true 存在返回false 2.boolean mkdir() 创建目录 3.boolean mkdirs() 创建多级目录 删除方法 1.boolean delete() 2.boolean deleteOnExit() 文件使用完成后删除 例子1:列出指定文件夹的文件或文件夹 public class FileDemo1 { public static void main(String[] args){ File[] files =File.listRoots(); for(File file:files){

System.out.println(file); if(file.length()>0){ String[] filenames =file.list(); for(String filename:filenames){ System.out.println(filename); } } } } } 例子2:文件过滤 import java.io.File; public class FileTest2 { public static void main(String[] args) { File file = new File("file"); String[] names = file.list(); for(String name : names) { if(name.endsWith(".java")) { System.out.println(name); }

实验五 输入输出流

实验五输入输出流 一、实验目的 1.掌握文件的使用 2.掌握字节I/O流、字符类I/O流、缓冲流、数据流等常用流的使用。 3.熟悉对象流、RandomAccessFile类的使用。 二、实验内容 1.利用各种常用IO流的处理方法,编写Java应用程序。 三、实验步骤与要求 第1题文件加密 编写一个Java应用程序,将已存在的扩展名为.txt的文本文件加密后存入另一个文本文件中。 package four; import java.io.*; public class file { public static void main(String args[]) { File readFile =new File("Student.txt"), writeFile =new File("Hello.txt"); String s="欢迎来到北京 welcome"; char b[]=s.toCharArray(); try{ FileWriter out=new FileWriter(readFile,true); out.write(b); out.close(); FileWriter tofile=new FileWriter ("hello.txt"); for(int i=0;i

tofile.write(secret); tofile.close(); FileReader inOne=new FileReader("Hello.txt"); int t=0; System.out.println("存入后:"); while((t=inOne.read(b,0,2))!=-1) { String str=new String(b,0,2); System.out.println(str); } inOne.close(); } catch (IOException e){ System.out.println(e); } } } 第2题读写基本类型数据 编写一个Java应用程序,将若干基本数据写入到一个文件,然后再按顺序读出。

java实验11 输入输出流 - 答案

实验输入输出流 一、实验目的 1、掌握文件字节流的用法; 2、掌握文件字符流的用法; 3、掌握缓冲流的用法; 二、实验内容与步骤 1、编写程序,实现将诗句写入c:\小池.txt文件中,然后再从该文件中读出并打印输出。宋诗《小池》 作者:杨万里 泉眼无声惜细流, 树荫照水弄轻柔。 小荷才露尖尖角, 早有蜻蜓立上头。 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; public class PoemWrite { public static void main(String[] args) { Scanner reader=new Scanner(System.in); String s; try{ FileWriter outOne=new FileWriter("c:\\小池.txt"); BufferedWriter outTwo=new BufferedWriter(outOne); while(!(s=reader.nextLine()).equals("0")){ outTwo.write(s); outTwo.newLine(); } outTwo.flush(); outTwo.close(); outOne.close(); FileReader inOne=new FileReader("c:\\小池.txt"); BufferedReader inTwo=new BufferedReader(inOne); while((s=inTwo.readLine())!=null){

实验十一 流类库与输入/输出

实验十一流类库与输入/输出(2学时) 一、实验目的 1.熟悉流类库中常用的类及其成员函数的用法。 2.学习标准输入输出及格式控制。 3.学习对文件的应用方法(二进制文件、文本文件)。 二、实验任务 1.观察以下程序的输出,注意对输出格式的控制方法; //labll—1.cpp #include Using namespace std; #define D(a)<<#a<

实验6 输入输出流操作

实验6 输入输出流操作 一、实验目的 1. 理解数据流的概念 2. 理解Java流的层次结构 3. 理解文件的概念 二、实验要求 1. 掌握字节流的基本使用方法 2. 掌握字符流的基本使用方法 3. 能够创建、读写、更新文件 三、实验练习内容 1. Java的标准输入输出流System.in/System.out 知识点解析: 标准数据流指在字符方式下(如DOS 提示符)程序与系统进行输入输出的方式,键盘和显示器屏幕是标准输入输出设备,数据输入的起点为键盘,数据输出的终点是屏幕,输出的数据可以在屏幕上显示出来。 示例:课本例10.1 2. 文件字节输入输出流类FileInputStream/ FileOutputStream 知识点解析: 文件字节输入输出流主要负责完成对本地磁盘文件的顺序输入与输出操作。示例:课本例10.2 3. 数据字节输入输出流DataOutputStream/DataInputStream 知识点解析: 使用数据输入流DataOutputStream 和数据输出流DataInputStream 可以读取或写入8种基本数据类型的数据,不用关心它们的实际长度是多少字节。一般与文件输入流FileInputStream 和输出流类FileOutputStream 一起使用。 示例:课本例10.3 4. 对象字节输入输出流ObjectInputStream/ ObjectOutputStream 知识点解析: 使用对象流可以直接写入或读取一个对象。由于一个类的对象包含多种信

息,为了保证从对象流中能够读取到正确的对象,因此要求所有写入对象流的对象都必须是序列化的对象。一个类如果实现了Serializable 接口,那么这个类的对象就是序列化的对象。Serializable 接口没有方法,实现该接口的类不需要实现额外的方法。 示例:课本例10.4 5. 文件字符输入输出流FileReader/FileWriter和字符缓冲输入输出流 BufferedReader/BufferedWriter 知识点解析:文件字符输入输出流类与文件字节输入输出流类功能类似,但处理的基本单位是字符。字符缓冲输入输出流类用来对字符流进行成批的处理。 示例:课本例10.5 6. 文件类File 知识点解析: 文件类主要用来保存文件或目录的各种属性, 包括文件名、文件长度、最后修改时间、是否可读等;文件类还有以下功能:提供获得当前文件的路径名, 判断指定文件是否存在, 获得当前目录中所有文件列表, 创建文件、删除文件、创建目录、删除目录等操作的方法。 示例:课本例10.6 7. 文件过滤器接口FileFilter和FilenameFilter 知识点解析: 文件过滤器接口FileFilter和FilenameFilter用来实现对文件名字符串的过滤。两个接口中都声明accept()方法来实现过滤操作。 示例:课本例10.7 8. 随机文件类RandomAccessFile 知识点解析:随机文件类用于进行随意位置、任意类型的文件访问,并且在文件的读取方式中支持文件的任意读取而不只是顺序读取。 示例:课本例10.8 四、设计题(以下题目1、2题必做,第3题选做) 1. 利用文件字节输入输出流和数据字节输入输出流,将"九九乘法表"写入整数类型文件,并输出显示。 2. 将Java的关键字保存在一个文本文件中,判断一个字符串是否为Java的关键字。 3. 使用文件字节输入/输出流,合并两个指定文件;当文件中的数据已排序时,合并后的数据也要求是已排序的。

第9章流类库与输入输出

第9章流类库与输入输出 9.1 本章提要 (1)C++语言提供一个用于输入/输出(I/O)操作的类族,这些操作是以对数据敏感 的方式实现的。类族提供了对预定义类型进行输入/输出操作的能力,程序员也 可以利用这个类族进行自定义类型的输入/输出操作。 (2)标准输出操作方法 ①将插入符作用在流对象cout上,可输出显示整型数、浮点数,字符和字符串。 ②使用成员函数put( )可输出一个字符 ③使用成员函数write( )可输出一个字符串 (3)标准输入操作方法 ①将提取符作用在流对象cin上,可输入整型数、浮点数、字符和字符串。 ②使用成员函数get( )可输入一个字符,使用成员函数getline( )可输入—行字符。 ③使用成员函数read( )可读取一个字符串。 (4)格式化输入输出的两种方式 ①使用标志字和成员函数 ②使用操作子 (5)磁盘文件的输入和输出,包括: ①磁盘文件的打开和关闭操作 ②文本文件的读写操作 ③二进制文件的读写操作 ④随机访问数据文件 9.2 程序举例 下面是一个展示用不同方法(使用重载运算符和成员函数)对标准的输入输出流对象(cin和cout)进行操作的例子。 例9-1 用不同方法操作流对象 //ch9_1.cpp 标准设备的输入输出 #include void main() { char buffer1[80],buffer2[80],buffer3[80];

cout<<"Please enter a sentence:"<>buffer1; cout< void main() { //设置整数流的格式和基数 int x=123; cout<<"dec: "<

最新c++课件第十三章 输入输出流(1)

c++课件第十三章输入输出流(1)

第13章输入输出流 13.1 C++的输入和输出 13.1.1输入输出的含义 (1)对系统指定的标准设备进行输入和输出。 (2)以外存磁盘文件为对象进行输入和输出。 (3)对内存指定的空间进行输入和输出。 13.1.2 C++的I/O对C的发展——类型安全和可扩展性13.1.3 C++的输入输出流 1. iostream类库中有关的类 图13.1

图13.2 图13.3 2. 与iostream类库有关的头文件 iostream fstream strstream stdiostream iomanip 3. 在iostream头文件中定义的流对象 4. 在iostream头文件中重载运算符 ostream operator << (char *); //用于向输出流插入一个字符串 cout<<"C++"; 相当于 cout.operator<<("C++"); 对于自己的类,可用11章的方法进行重载。13.2标准输出流

13.2.1 cout,cerr和clog流 1.cout流对象 (1)cout流是流向显示器的数据。 (2)输出基本类型数据时,可以不考虑数据的类型是什么。 (3)cout流在内存中对应开辟了一个缓冲区,用来存放流中的数据,当向cout流插入一个endl时,不论缓冲区 是否已满,都立即输出流中的所有数据,然后插入一 个换行符,并刷新流(清空缓冲区)。 2.cerr流对象 cerr流是标准错误流。cerr流被指定与显示器关联。cout 流通常是传送到显示器输出,但也可以被重定向输出到磁盘文件。 例13.1 解一元二次方程ax2+bx+c=0 #include #include using namespace std; void main() { float a,b,c,disc; cout<<"please input a,b,c:"; cin>>a>>b>>c; if (a==0) cerr<<"a is equal to zero,error!"<

第9章 输入输出流与文件操作

第9章输入/输出流与文件操作 9.1 什么是流?流有什么用?面向对象语言为什么需要流?哪些场合需要流? 答:流是指一组有顺序、有起点和终点的字节集合,是对数据传输的总称或抽象(也就是数据在两个对象之间的传输称为流)。 流的作用就是使数据传输操作独立于相关设备。 在面向对象的程序设计中,数据的传输和流动具有广泛性,可以在内存与外部设备之间传输,还可以从内存到内存,甚至可以从一台计算机通过网络流向另一台计算机等,故面向对象语言采用流机制。 在标准输入/输出、在文件的读/写等操作中都需要流。 9.2 Java提供了哪些流类?各种流类之间的关系是怎样的?什么场合需要使用什么流类? 答:Java中按照流的方向性,流分为输入流和输出流两大类。按照流中元素的基本类型,流分为字节流和字符流两大类。字节流类按照流的方向分为字节输入流类和字节输出流类,字符流类方向性分为字符输入流类和字符输出流类。以及文件操作类File,随机存取文件类RandomAccessFile. 其中InputStream类是所有字节输入流的根类,OutputStream类是所有字节输出流的根类;Reader类是所有字符输入流的根类,Writer类是所有字符输出流的根类。 9.3 操作系统中文件和目录概念是怎么样的?Java提供了哪些对文件和目录操作的类?程序中对文件和目录能够进行哪些操作?如何操作? 答:文件是信息的一种组织形式,是存储在外部存储介质上的具有标识名的一组相关的信息集合。目录是文件系统组织和管理文件的基本单位,保存它所管理的每个文件的基本属性信息(称为文件目录项或文件控制块)。 Java直接对文件的顺序存取和随机存取操作,提供了File类记载文件属性信息,对文件读/写操作时以流的形式。RandomAccessFile类以随机存取方式进行文件读/写操作。但在对文件操作过程中还需要使用文件过滤器接口和文件对话框类。在操作系统中,目录也是以文件的形式保存的,称为目录文件。故一个File对象也可以表示一个目录。可以对文件进行读、写、删除、创建等操作,对目录可以读取、创建、删除等操作。应用程序通过调用操作系统提供的系统调用能够对文件及目录进行各种操作。 再打开、保存、复制文件时,需要读/写文件中的数据内容,这些操作由流实现,不同类型的文件需要使用不同的流泪。 9.4 流与文件操作有什么关系?实际应用中将流类与文件操作结合起来能够实现哪些复杂问题?如何实现? 答:对文件的操作时通过流这个工具进行的。再打开、保存、复制文件时,需要读/写文件中的数据内容,这些操作由流实现,不同类型的文件需要使用不同的流泪。 9.5 什么是输入/输出?什么是标准输入/输出?Java怎样实现标准输入/输出功能?答:数据由外部设备流向内存,这个过程称为输入;数据有内存流向外部设备,这个过程称为输出。 在计算机系统中,标准输入是从键盘等外部输入设备中获得数据,标准输出是向显示器或打印机等外部输出设备发送数据。 Java在https://www.360docs.net/doc/c418481235.html,ng.System类中声明了3个常量in、out和err用于实现标准输入/输出功能。 9.6 除了标准输入/输出及文件操作之外,还有那些应用中需要使用流?

javaFile文件操作和文件流的详解(福哥出品)

一. 创建文件 (1)最常用的(获得一个固定路径下的文件对象) File parentFile = new File(“D:\\My Documents\\.....”);//参数是一个路径的字符串。 (2)在父目录创建一个名为child的文件对象,child 为文件对象的名字 File chileFile= new File(“D:\\My Documents\\.....”,String child); 或File chileFile= new File(parentFile,String child); 二,常见文件夹属性和方法 (1)createNewFile(); 该方法的作用是创建指定的文件。该方法只能用于创建文件,不能用于创建文 件夹,且文件路径中包含的文件夹必须存在 File file=new ("D:\\My Document\\text.txt"); file.createNewFile(); 这样就会在D盘下的My Document 创建text.txt的记事本(注意:首先得保 证D盘下有My Documen这个文件夹) (2)mkdir(); 根据File对象的名字(路径)创建一个目录(文件夹),如果是相对目录,则新建的目

录在当前目录下 (3)mkdirs(); 如果File对象名字有多级目录,则可以调用该方法一次性创建多级目录。 (4)exists(); 判断File对象指向的文件是否存在,返回一个boolean类型(5)isDirectory(); 判断File对象指向的文件是否为目录,返回一个boolean类型的值,true或者false。 (6)getName();获得文件名称(不带路径) (7)length(); 得到File对象指向文件的长度,以字节计算,返回一个长整形的值(long);注意:在 系统中,文件夹(目录)的大小为零,也就是不占用空间,使用length()时返回的是0 (8)delete(); 删除File对象所指定的文件 (9)isFile(); 判断File对象指向的文件是不是标准文件(就像图片,音乐文件等) 三,文件的属性和方法 1.File.separator 当前操作系统的名称分隔符,等于字符串“\”.

实验八+输入输出流类及文件的读写

实验八输入输出流类及文件的读写 一、实验目的: 1、掌握标准输入输出(iostream库中标准对象cin、cout)的使用 2、熟悉IO流类成员函数输入输出(cin.get, cin.getline, cin.read; cout.put, cout.write)的使用 3、掌握输出格式(标准控制符、IO流类成员函数、iomanip 头文件中的控制符)控制方法 4、掌握磁盘文件的输入输出方法 二、实验环境: 1、PC计算机一台; 2、Dev-C++开发环境。 三、实验内容: 1、创建一个文件xx.txt,编写程序,统计文件中字符的个数。 2、定义描述职工工资的类Laborage,数据成员为职工号(No)、姓名(Name[8])、应发工资(Ssalary)、社保金(Security)、实发工资(Fsalary)。定义公有成员函数Input(),在Input()函数内输入职工号、姓名、应发工资、社保金,实发工资由公式: Fsalary=Ssalary-Security计算。定义输出职工工资的成员函数Show()。在显示函数Show()中,职工号、姓名的输出域宽为8、

左对齐,其余数据的输出域宽为10、右对齐、保留小数点后两位,输出格式均用预定义格式控制函数设置。在主函数中用Laborage 类定义职工对象数组a[3]。用Input()输入职工工资,用Show()显示每个职工的工资。 五、实验代码及结果(程序运行结果请以截屏图给出):(1) #include #include #include using namespace std; bool isnum_str(char str) //判断是否是字符或数字 { if((str >= 'A' && str <= 'z') || (str >= '0' && str <= '9') ) return true; else return false; } void count(fstream &outfile, int *cnt ) //统计函数 { char str[256];

第12章流类库和输入输出概论

第12章流类库和输入输出 【内容提要】 流的概念及流类库 输入输出的格式控制 输入与输出运算符的重载 文件操作 【重点与难点】 12.1 流的概念及流类库 12.1.1 流的概念 C++中的流是指数据从一个对象传递到另一个对象的操作。从流中读取数据称为提取操作,向流内添加数据称为插入操作。流在使用前要建立,使用后要删除。如果数据的传递是在设备之间进行,这种流就称为I/O流。C++专门内置了一些供用户使用的类,在这些类中封装了可以实现输入输出操作的函数,这些类统称为I/O流类。 C++流预定义了4个标准流类对象,它们可以直接用来输入输出。这些标准流类对象都包含在头文件iostream.h中。 istream cin; //与标准输入设备相关联的标准输入流。 ostream cout; //与标准输出设备相关联的标准输出流。 ostream cerr; //与标准错误输出设备相关联的非缓冲方式的标准输出流。ostream clog; //与标准错误输出设备相关联的缓冲方式的标准输出流。12.1.2 流类库 C++的流类库有两个平行的基类streambuf和ios,其它的流类都是从这两个基类直接或间接派生的。使用这些流类库时,必须包含相应的头文件。 ios类及其派生类为用户提供了使用流类的接口。以下给出ios类及其派生类的层次结构图。 ios istream ifstream istream_withassign iostream istrstream fstream ostream strstream ofstream sdiostream ostream_withassign ostrstream 图12.1 ios类的层次关系 12.2 输入输出的格式控制 C++仍可使用C中的printf()和scanf()进行格式化控制,同时又提供了两种格式化控制的方法,一是使用ios类中的有关格式控制的成员函数,二是使用执行格式化输入/输出的格式控制符。 12.2.1 用ios类的成员函数进行格式控制 使用这种方式进行格式控制主要是通过设置及清除格式状态标志、设置域宽、设置填充字符和设置输出精度的操作来完成的。 设置及清除格式状态标志 格式状态标志说明 ios::skipws跳过输入中的空白,用于输入 ios::left左对齐输出,用于输出

输入输出流

第十章 输入/输出流
程序在运行时通常要和外部进行交互, 即从外部读取数据或向外部设备发送数据, 这就 是所谓的输入/输出(Input/Output)。 数据可以来自或者发往文件、 内存、 另一个程序或网络。 数据也可有不同的格式,例如可以是各种编码(ASCII 码或 Unicode 码等)的字符串、图像、 声音或对象等等。 Java 语言使用抽象概念——流来描述程序与数据发送或接收者之间的数据 通道。使用输入/输出流,程序员可以方便灵活和安全地实现输入输出功能。
§10.1 输入/输出基本概念
10.1.1 外部设备与文件
我们可以从不同角度对外部设备进行分类。 按照外部设备的工作特性, 我们可将外部设 备分为两类:存储设备和输入/输出设备。 存储设备用于存储信息,包括硬盘、软盘、磁带、光盘等。程序可将数据写入到这些设 备上,也可从这些设备读出数据,数据通常组织为文件形式。这类设备上存储的数据在物理 上往往是按字符块组织的,因而又将它们称为块设备。 输入/输出设备又可分为输入设备和输出设备。 输入设备是计算机用于接受外界信息的 设备,诸如键盘、鼠标、扫描仪等均为输入设备;输出设备是将计算机处理完毕的数据送往 外界的设备,诸如显示器、打印机、绘图仪等均为输出设备。由于这两类设备上的数据往往 是以字符为单位组织的,所以又称它们为字符设备。 计算机程序要与外界进行交互就必须使用相应的机制与输入/输出设备打交道。 程序的 输入是指从输入设备接收数据,程序的输出是指将数据传递给外部设备。 早期的高级程序设计语言对特定的外部设备提供特定的输入/输出操作, 这导致设计出 来的程序代码可移植性很差。后来引入了文件(file)的概念,在程序中不仅可以声明文件 并将文件作为输入/输出的对象, 而且还可以在文件与某个外部设备之间建立关联, 将文件 作为输入设备与输出设备的抽象描述。 目前文件已成为高级程序设计语言输入/输出机制的 基本概念。 一个文件必须有一个由用户命名的唯一名字。 文件可用于存储程序和数据, 还可用于提 高程序的设备无关性, 所谓设备无关性不仅指程序要独立于同类设备的具体台号, 而且还要 独立于设备的类型。 当我们的程序向屏幕或打印机输出时, 不必考虑使用的是哪一种型号的 显示器或打印机。 在操作系统中, 输入/输出设备被视作一种特殊的文件, 这类文件的名字是由操作系统 预先规定好的。例如在 MS-DOS 中显示器被命名为 CON 的文件(控制台终端 console 的缩 写) 、打印机被命名为 PRN 的文件(printer 的缩写) 。这样,程序的输入/输出操作采用了 与文件统一的方式,而不用理会实际的物理设备是什么。
10.1.2 文件的基本概念
Java 语言将文件看作是字节的序列, 即由一个个字节的数据顺序组成。 例如我们要将一 个班全体学生的基本资料存放在一个文件中, 文件中的数据并不是由学生记录组成的, 而是 由一个个字节组成的。 如何将文件中的这些字节组织为记录是由程序完成的, 文件本身并没 有划定任何边界。因而这种文件又称为流式文件(stream file) 。 (1)文本文件与二进制文件 根据文件中数据的组织形式, 可将文件分为文本文件和二进制文件两类。 文本文件存放 的是 ASCII 码(或其他编码的)字符,使用 Windows 操作系统的记事本打开可正确查看其
-1-

相关文档
最新文档