C++程序设计(第二版)第9章流类库与输入输出

合集下载

C语言程序设计教程(第2版)课件第9章

C语言程序设计教程(第2版)课件第9章

⑵指针与指针的加运算毫无意义,所以指针与指针 没有加运算。 ⑶指针与指针的减运算要求相减的两个指针属于同 一类型,其结果是整数,表示两个指针之间的数 据的个数。其结果值的计算公式是:
ptr1-ptr2=(ptr1的值- ptr2的值) /指针的数据类型所占的字节数 例如:
int *ptr1,*ptr2,*ptr3,x; int ary[5]={2,4,8,16,32}; ptr1 = &ary[0] ; ptr2 = &ary[3]; ptr3 = ary; x=ptr2-ptr1;
9.3 指针与数组
9.3.1 一维数组的指针
数组的指针 :是数组的起始地址。
数组元素的指针 :是数组元素的地址。 当指针变量指向数组或数组元素时,它就是指 向数组的指针变量。
C规定: ⑴数组名代表数组的首地址(起始地址),
也就是第一个元素的地址。
⑵当指针变量p指向数组时,p+1指向数组 的下一个元素。假设一个整型元素占两 个字节,p+1是使p的地址加2个字节。 如:int a[10],*p ; p+i、a+i 、&a[i] 则:p=a ; 与 p=&a[0];等价 都是a[i]的地址。 称指针变量p指向数组元素a[0]
第9章 指 针
本章要点
指针的定义、引用和运算方法
数组、函数和字符串与指针的关系
本章难点
指针变量的引用
指针作为函数参数的运用
预备知识
1. 内存的概念 内存:就是内部存储器,是由存储单元组成 的。它的特点是存储单元是线性连续
的。存储单元的最小单位是字节。
2. 地址的概念
地址:为了访问内存中的某个存储单元,我们 要为它编号,这种编号称为内存地址。 通过地址我们就能够访问该地址所标 识的存储单元。

C++程序设计语言第九章 流类库与输入输出

C++程序设计语言第九章 流类库与输入输出

输出流
插入运算符(<<)
• 插入(<<)运算符是所有标准C++数据类 型预先设计的。 • 用于传送字节到一个输出流对象。 • 插入运算符举例
输出流
控制输出格式
• 控制输出宽度
–为了调整输出,可以通过在流中放入setw操纵符或 调用width成员函数为每个项指定输出宽度。
• 例11-1 使用width控制输出宽度
输出流
例11-3设置对齐方式
#include <iostream.h> #include <iomanip.h> void main() { double values[]={1.23,35.36,653.7,4358.24}; char *names[]={"Zoot","Jimmy","Al","Stan"}; for(int i=0;i<4;i++) cout<<setiosflags(ios::left) <<setw(6)<<names[i] 输出结果: 输出结果: <<resetiosflags(ios::left) Zoot 1.23 Jimmy 35.36 <<setw(10)<<values[i] Al 653.7 <<endl; Stan 4358.24 }
输出流
二进制输出文件
• 以通常方式构造一个流,然后使用 setmode成员函数,在文件打开后改变 模式。 • 使用ofstream构造函数中的模式参量指 定二进制输出模式。 • 使用二进制操作符代替setmode成员函 数:ofs << binary;

C程序设计(第二版)第九章流类库与输入输出

C程序设计(第二版)第九章流类库与输入输出
点击访问格式控制标志相关接口函数
【例9.1】整型数输出。
basic_ ios
指针 basic_ streambuf
basic_ istream basic_ ostream
basic_ ifstream
basic_ iostream basic_ ofstream
basic_ fstream
图9.1 主要输入/输整出理p流pt 模板层次
3
9.1 C++的基本流类体系
right=0x0004,
//输出右对齐
internal=0x0008, //在输出符号或数制字符后填充
dec=0x0010, //在输入输出时将数据按十进制处理
oct=0x0020, //在输入输出时将数据按八进制处理
hex=0x0040, //在输入输出时将数据按十六进制处理
整理ppt
7
9.2 输入输出的格式控制(选读)
“插入”的含义是指输出操作,可看作向流中插入一个字 符序列。
cin使用提取运算符。 cout、cerr和clog使用插入运算符。
文件:
文件处理完成永久保存的功能。 在Windows下不同的C++平台,都为文件功能作了扩充, 在VC++的MFC编程中采用了序列化(Serialization)。
整理ppt
6
9.2 输入输出的格式控制(选读)
格式控制符:
C++在类ios_base中提供格式化输入输出。这些格式 是对所有文本方式的输入输出流均适用。格式控制符 定义为公有的无名枚举类型,在VC++6.0中定义为:
enum{
skipws=0x0001,

C++:流类库与输入输出

C++:流类库与输入输出

C++:流类库与输⼊输出7.2.1 C++的输⼊输出流ios:流基类(抽象类)istream:通⽤输⼊流类和其他输⼊流的基类ostream:通⽤输出流类和其他输出类的基类iostream:通⽤输⼊输出流类和其他输⼊输出流类的基类(以下的派⽣类对象有cin、cout、cerr、clog)ifstream:输⼊⽂件流类ofstream:输出⽂件流类fstream:输⼊输出⽂件流istrstream:输⼊字符串流类ostrstream:输出字符串流类strstream:输⼊输出字符串类iostream_withassign: 通⽤输⼊输出流类和其他输⼊输出流类iostream的的派⽣类7.2.2 预定义的流对象C++中包含⼏个预定义的流对象,它们是标准输⼊流对象cin、标准输出流对象cout、⾮缓冲型的标准出错流对象ceer、缓冲型的标准出错流对象clogcin是istream的派⽣类istream_withassign的对象,它与标准输⼊设备(通常是键盘)相联系。

cout是ostream的派⽣类ostream_withassign的对象,它与标准输出设备(通常是显⽰器)相联系。

ceer是ostream的派⽣类ostream_withassign的对象,它与标准错误输⼊设备(通常是显⽰器)相联系。

clog是ostream的派⽣类ostream_withassign的对象,它与标准错误输⼊设备(通常是显⽰器)相联系。

由于istream和ostream类都在头⽂件iostream中声明的,因此只要在程序中包含头⽂件iostream.h,C++程序开始时这四个标准流对象的构造函数都被⾃动调⽤。

7.2.3 输⼊输出流的成员函数(1)put函数put函数⽤于输出⼀个字符格式:cout.put(char ch)例如:cout.put('A')===cout.put(65)===cout.put(25+40)(2)get函数get函数的功能与提取运算符>>类似,主要不同之处是get函数在读⼊数据时可以包括空⽩字符,⽽后者不可以。

c++流类库与输入输出习题答案

c++流类库与输入输出习题答案

1.概念填空题1.1头文件iostream中定义了4个标准流对象cin,cout,cerr,clog。

其中标准输入流对象为cin,与键盘连用,用于输入;cout为标准输出流对象,与显示器连用,用于输出。

1.2用标准输入流对象cin与提取操作符>>连用进行输入时,将空格与回车当作分隔符,使用get()成员函数进行输入时可以指定输入分隔符。

1.3每一个输入输出流对象都维护一个流格式状态字,用它表示流对象当前的格式状态并控制流的格式。

C++提供了使用格式控制函数与操作子函数来控制流的格式的方法。

1.4 C++根据文件内容的数据格式可分为两类:文本文件和二进制文件。

前者存取的最小信息单位为字节,后者记录。

1.5文件输入是指从文件向内存读入数据;文件输出则指从内存向文件输出数据。

文件的输入输出首先要打开文件;然后进行读写;最后关闭文件。

1.6文本文件是存储ASCII码字符的文件,文本文件的输入可用cin从输入文件流中提取字符实现。

文本文件的输出可用cout将字符插入到输出文件流来实现。

程序在处理文本文件时需要(需要/不需要)对数据进行转换。

1.7二进制文件是指直接将计算机内的数据不经转换直接保存在文件中。

二进制文件的输入输出分别采用read()、write() 成员函数。

这两个成员函数的参数都是2个,分别表示读写缓冲区和字节数。

1.8设定、返回文件读指针位置的函数分别为seekg,tellg;设定、返回文件写指针位置的函数分别为seekp,tellp。

2 简答题2.1 为什么cin输入时,空格和回车无法读入?这时可改用哪些流成员函数?2.2 文件的使用有它的固定格式,试做简单介绍。

2.3 在ios类中定义的文件打开方式中,公有枚举类型open_mode的各成员代表什么文件打开方式?2.4 简述文本文件和二进制文件在存储格式、读写方式等方面的不同,各自的优点和缺点。

2.5 文本文件可以按行也可以按字符进行复制,在使用中为保证能完整复制要注意哪些问题?2.6 文件的随机访问为什么总是用二进制文件,而不用文本文件?2.7 怎样使用istream和ostream的成员函数来实现随机访问文件?3.选择题3.1要进行文件的输出,除了包含头文件iostream外,还要包含头文件(C )。

C++语言程序设计第9章 流类库与输入输出

C++语言程序设计第9章 流类库与输入输出

• 【例9.1】 cout 、cerr区别。
#include <iostream> #include<stdlib.h> using namespace std; int main() { cout<<"hello "<<endl; cerr<<"hello world"<<endl; system("pause"); }
• 将例9-1编译形成项目可执行文件9_1.exe,在命令提示符状态 分别输入两个命令: • “9_1 >t1.txt”和“9_1 2>t2.txt”,分别查看t1.txt和t2.txt可 以看出不同。
9.2.1 插入运算符(<<)和操纵符
• 插入(<<)运算符是所有标准C++数据类型预先设计的,用 于传送字节到一个输出流对象。 • 很多情况下,程序员需要控制输入输出格式。C++提供了 两种格式控制方法:一种方法是使用ios类中有关格式控 制的成员函数;另一种是使用预先定义的操纵符一起工作 。下面重点讲述操纵符。 • C++预定义的操纵符分为带参数的操纵符和不带参数的操 纵符。通常,不带参数的操纵符在iostream文件中,而带 参数的操纵符在iomanip文件中定义。在进行输入输出时 ,操纵符被嵌入到输入或输出链中,用来控制输入输出的 格式。程序中如果使用带参数的操纵符,还必须使用预编 译命令: • #include <iomanip>
• 程序运行时,在内存中为每一个数据流开 辟一个内存缓冲区,用来存放流中的数据 。例如当用cout和插入运算符“<<”向显 示器输出数据时,先将数据送入内存输出 缓冲区保存,直到缓冲区满了或遇到endl, 就将缓冲区中的全部数据送到显示器显示 ;当用cin和提取运算符“>>”从键盘输入 数据时,键盘输入的数据先放着键盘的缓 冲区中,当按回车键时,键盘缓冲区中的 数据送入内存输入缓冲区形成cin流,然后 提取运算符“>>”从输入缓冲区提取数据 送给程序中的变量。

第9章 C++流

第9章 C++流

【复习与提示】
1. C++为实现数据的输入和输出定义了一个庞大的类库,它包括的类主要有ios,istream, ostream,iostream,ifstream,ofstream,fstream,使用到相应的流时,应加载相应的包含文 件: #include<iostream>; using namesapce std; 2. 将运算符“<<”称为插入运算符,“>>”称为抽取符。 3. 计算机处理的所有数据项最终都是0和1的组合,字符是由位构成的,域(field)是由字符构成 的。一个域就是一组有意义的字符。记录是由多个域构成(在C++中称为成员)。 4. C++语言把每一个文件都看成一个有序的字节流,每一个文件或者以文件结束符(end-of-file marker)结束,或者在特定的字节号处结束。 5. 文件可以用open( )函数打开,用close( )函数关闭,可以用同一个对象来处理单个程序中不 同的文件。 6. 每个流有一系列位或标记与它的操作相关。这些位在ios类中定义。与打开文件有关的位称 为打开方式位(open mode bits)。 7. C++提供了随机读写文件的函数seekg( )、tellg( )、seekp( )、tellp( ): (1)get指针:它指出将出现下一个读操作的文件的位置。 (2)put指针:它指出将出现下一个写操作的文件的位置。
流的层次结构
ios
istream
ostream
iostream
ifstream
fstream
ofstream
C++为用户进行标准I/O操作定义 了四个类对象
标识符名字 cin cout cerr clog 调用设备 键盘 屏幕 屏幕 打印机 默认的含义 标准输入 标准输出 标准错误 打印机

第九章C流PPT课件

第九章C流PPT课件

.
33
§9.4 文件的输入/输出
二、关闭文件
关闭文件操作主要是将缓冲区数据完整地 写入文件,添加文件结束标志,使文件流与对 应的物理文件断开联系。关闭文件时,调用 fstream的成员函数close()。
例:output.close();
.
34
#include "iostream.h"
#include "fstream.h"
例:fstream output; output.open("d:\\data\\test.dat",ios::out);
.
32
§9.4 文件的输入/输出
一、打开文件
打开文件有两种方式: (2)调用流类带参数的构造函数,建立流
对象的同时连接外部文件。 语句格式为:
流类 对象名(文件名,方式);
例:fstream output("d:\\data\\test.dat",ios::out);
3、使用成员函数getline( )获取一行字符
cin.getline(char *buf,int n,deline=‘\n’)
其中,buf用来存放一个字符串;n用来限定读 取的字符个数不能超过n-1个;第三个参数用来限 定一行字符的结束标志,默认为‘\n’。
结束该函数的条件:
①读取n-1个字符之后
②读取到换行符‘\n’之后
③读取到文件结束符或.其他结束符之后
9
比较:使用成员函数getline( )和get( )
.
10
§9.2 预定义类型的I/O
4、使用成员函数read( )获取指定个数的字符串 多用于从输入流中读取二进制的数据,如文件 流的操作。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最多提取nCount-1个字符给buf, 遇结束符delim或到达文件结束, 则停止提取。存入buf中的字符 串以0结尾,delim不存入buf。
9.3.3-1 标准输入流成员函数
函数原型 istream& getline(char* buf,int nCount,char delim=’\n’)
9.2.2 标准流对象
四个流对象均是文 本流对象,主要工 作是完成程序中的 数据与外部设备的 传输及数据格式的 转换。
键盘 istream cin
显示器 ostream cout
程序
9.3 标准设备的输入/输出
9.3.1 输入流 9.3.2 输出流 9.3.3 标准输入/输出函数成员 9.3.4数据流的错误检测
9.1 流的概念
C++语言本身并不包含输入输出功能,但C++标准库提 供了一系列输入输出流类,通过流类完成数据的输入输出。
在C++中,将数据从一个对象到另一个对象的传输抽象为 “流”。从流中获取数据的操作称为提取操作,向流中添 加数据的操作称为插入操作,数据的输入与输出就是通过 I/O流来实现的。
9.3.1 输入流
istream 类提供了格式化和非格式的输入功能。常用的 输入方法是在标准输入流对象cin上使用提取运算符”>>”。 从与键盘相连的标准输入流cin中提取数据并赋值给相应的 对象,提取运算符返回cin流对象的引用,因此提取运算符 可以连用。
cin>>变量名1>>变量名2…>>变量名n; 数据的提取是从输入回车开始的,提取运算符忽略了流 中的空格、制表符、Enter键等空白字符。
9.3.1 输入流
当遇到流结束标志EOF(-1)或者提取了一个无效的值 试图复制给对象时,提取运算符返回NULL(false)给 cin,否则返回cin流对象的引用。因此提取运算符可以 连用。
当输入流提取了一个无效值给对象时,比如:输入 类型错时,除了返回出错信息false给cin外,还会设置 流的failbit状态位,结束提取操作。
9.2.2 标准流对象
C++的流类库中预定义了四个全局流对象: cin 标准输入流对象, istream类的实例,键盘为其 标准设备。通过流提取运算符>>,从键盘上输入数 据 cout 标准输出流对象, ostream类的实例,显示器 为其标准设备。通过流插入运算符<<,可以将数据 输出至显示器 cerr、clog 标准错误输出流,输出设备是显示器。
int gcount()
istream& ignore(int nCount=1,char delim=EOF)
int peek();
含义
最多提取nCount-1个字符给buf, 遇结束符delim或到达文件结束, 则停止提取。存入buf中的字符 串以0结尾,delim不存入buf。
9.2 C++的基本流类体系
9.2.1 流类库 9.2.2 标准流对象
9.2.1 流类库
C++的流类库是用继承方式建立起来的一个输入/输出 类库。由抽象类ios及其派生类构成ios类体系,共同完成 I/O操作。
9.2.1 流类库
ios类是抽象类,主要提供I/O所需的公共操作。 其派生的iostream、fstream、strstream类分别提 供标准设备、文件、字符串三类对象的I/O功能。这 些流类有着相似的接口,程序能够以较为一致的方 式使用这些流类,实现不同对象的I/O,从而使得整 个I/O流类库具有较好的一致性、可扩展性。
9.3.3-1 标准输入流成员函数
函m& get(char& ch)
istream& get(char* buf, int nCount,char delim=’\n’ )
含义
提取字符(包括空格),然后返回 该字符的值。若没有读到字符, 返 回 EOF , 并 设 置 流 对 象 的 failbit标志。 提取字符(包括空格)给ch,返回 istream对象的引用。
9.1 流的概念
在C++中,I/O可以分为三类:面向标准设备的I/O、 面向文件的I/O、面向字符串的I/O。
面向标准设备的I/O是指程序从键盘获取数据,向显 示器输出数据;
面向文件的I/O是指程序从文件中获取数据,把数据 保存到文件中;
面向字符串的I/O是指程序从字符串中获取数据,把 数据保存到字符串中。
第9章 流类库与输入/输出
输入/输出是程序必不可少的部分,C++程 序的输入/输出操作是由I/O流类库实现的。流 类库定义了一批流对象,连接常用的外部设备, 如键盘、显示器等。程序员也可以自定义I/O流 对象,与磁盘文件、字符串等对象连接。使用 流类库提供的函数,实现数据传输。
第9章 流类库与输入/输出
[例9-1]输入流对象cin的使用
9.3.2 输出流
ostream类提供了格式和非格式的输出功能。常用的输 出方法是在标准输出流对象cout上使用插入运算符”<<”。
cout<<变量名1|表达式1<<…<<变量名n|表达式n; 插入运算符返回cout流对象的引用,所以插入运算符 也可以连用。
[例9-2]输出流对象cout的使用。
学习内容: 1.了解C++流的概念、C++流类体系及常用流对象 2.掌握标准设备输入输出操作,两种格式控制方法以及状 态字的使用 3.理解文件的概念、文本文件和二进制文件的区别,掌握 两类文件的输入/输出。 4.理解字符串流的的概念,掌握字符串流的输入/输出。
第9章 流类库与输入/输出
9.1 流的概念 9.2 C++的基本流类体系 9.3 标准设备的输入/输出 9.4 流的格式控制 9.5 文件的输入/输出 9.6 字符串流的输入/输出 9.7 文件应用实例
9.1 流的概念
程序与外部进行信息交换时,流负责将程序中的对象和文 件对象建立联系,并管理数据的流动。程序中的对象操作 流对象,流对象连接文件对象。对程序而言,文件对象有 的特性,流对象也有,所以在程序中,就将流对象看作是 文件对象。
操作系统将键盘、屏幕、打印机和通信端口等设备作为扩 展文件处理的,因此,从C++程序的角度来看,这些设备 与磁盘文件并无区别,因此与这些设备的交互也是通C++ 的I/O流类来实现的。
相关文档
最新文档