失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 自考版《C++程序设计》04747 第七章 输入/输出流(附课后习题答案)

自考版《C++程序设计》04747 第七章 输入/输出流(附课后习题答案)

时间:2018-07-09 13:02:08

相关推荐

自考版《C++程序设计》04747 第七章 输入/输出流(附课后习题答案)

考试题型:主要在选择题、填空题,比分占5%左右。

第一节 流类简介

1、在C++中,输入输出时用流来完成的。C++的输出操作将一个对象的状态转换成一个字符序列,输出到某个地方。输入操作也是从某个地方接收到一个字符序列,然后将其转换成一个对象的状态所要求的格式。把接受输出数据的地方叫做目标,把输入数据来自的地方叫做源。

2、读操作在流数据抽象中北称为(从流中)“提取”,写操作被称为(向流中)“插入”。

3、在C++标准类库中,将与数据输入输出相关的流统称为“流类”,C++常见的几个流类的派生关系为:

4、常用的I\O流类列表:

第二节 标准流对象(重点)

1、C++在头文件iostream中为用户预定义了4个标准流对象。

(1)cin(标准输入流):与标准输入设备(键盘)相关联,用于读取数据,可以被重定向为从文件中读取数据。

(2)cout(标准输出流):与标准输出设备(显示器)相关联,用于写入数据,可以被重定向为向文件写入数据。

(3)cerr(非缓冲错误输出流):与标准错误信息输出设备(显示器)相关联(非缓冲),用于输出出错信息,不能被重定向

(4)clog与标准错误信息输出设备相关联(缓冲),用于输出出错信息,不能被重定向

2、重定向:

改变默认的输入来源,或改变默认的输出目的地。

重定向函数freopen的原型如下:

FILE *freopen(const char *path,const char *mode,FILE *stream);

函数freopen()的功能是将stream按mode指定的模式重定向到路径path指向的文件。

如果重定向时发生错误,则关闭原来的stream,函数返回NULL。Mode可以是“w”(写)或“r”(读)方式。

3、ios类中与流状态相关的成员函数,可在程序中直接使用。

(1)返回流是否结束

int eof()const; //函数返回eofbit的值。

使用eof()函数测试是否到达文件尾,当文件操作结束时遇到文件尾时,函数返回1;否则返回0。

(2)返回流是否处于正常状态

int fail()const;//返回failbit状态,以判断流操作是否失败。

Failbit表示发生流格式错误,但缓冲区中的字符没有丢失。这种错误通常是可以修复的。

4、ios类中与流状态相关的成员函数,可在程序中直接使用。

(3)判断流是否正常

int good()const;int operator void *();

如果eofbit、failbit和badbit全部都没有被置位(即均为0),则返回1(true),否则返回0(false)。

(4)返回流是否处于失败状态

int bad()const;

int operator void !();

如果eofbit、failbit和badbit中有一位被置位(即均为1),则返回1(true),否则返回0(false)。

(5)返回状态字

int rdstate()const;//该函数返回流的当前状态。

(6)返回状态字

void clear(int nStata = 0);//该函数恢复或设置状态字。默认值为0,即将流状态恢复为正常。

第三节 控制I/O格式

1、格式化输入输出:

例如,要求用十六进制输出整数,或者对输出的小数只保留3位小数等

C++提供了两种方法的操作:

(1)用IOS类成员函数控制格式

(2)利用特定的操作符函数实现格式控制

2、常用的用于格式控制的流操作符,使用时必须包含头文件iomanip

第四节 调用cout的成员函数

1、用于控制格式的成员函数原型:

(1)设置和返回标志字

long flags(log IFlags);//使用参数IFlags设置(替换),返回值为设置前的标志字。

Long flags()const;//返回当前标志字。

(2)设置标志位

long setf(long IFlags);//使用参数IFlags置位指定的标志字,返回值为置位前的标志字“添加”

long setf(long IFlags,long IMask);//返回值为更新前的标志字。

(3)清除标志字

Long unsetf(long IFlags);//清除参数IFlags指定的标志位,返回清除前的标志字。

(4)设置和返回输出宽度

int width(int nw);//将下一个输出项的显示宽度设置为nw。

int width()const;//返回值为当前的输出宽度值。

(5)设置填充字符

char fill(char cFill);当设置宽度大于数据输出需要的宽度时,空白位置以字符参数cFill填充。

char fill()const;返回当前使用的填充符。

(6)设置数据显示精度

int precision(int np);//参数np设置数据显示精度。

如果浮点数以定点形式输出,则np表示小数点后的数字位数。

如果设置为科学计数法输出,则np为尾数精度位数(包含小数点)。

int precision()const;//系统默认的数据显示精度为6位。float类型最大数据显示精度为6位,double类型最大数据显示精度为15位。

2、ostream还提供了一些输出流的成员函数:

(1)使用put()输出一个字符

put()函数的参数可以是字符变量、字符常量或ASCII码值。

(2)使用write()输出字符串

cout.write(const char *str,int n);//str 用于存放字符串名,n用于指定字符个数

第五节 调用cin的成员函数(难点)

1、使用get()获取一个字符

成员函数get()可以从输入流中提取一个字符,函数的返回值就是读入的字符。

函数如果遇到输入流中的文件结束符,则函数返回值为EOF(EOF代表-1)。若返回值不等于EOF,则表示已成功读入一个有效字符。

cin.get();

2、使用getline()读取一行字符串

作用是从输入流中读取一行字符(包括空格符)

cin.getline*(char *buf,int n,char deline=‘\n’);

//buf是用来存放字符串,n用来设置字符个数上限,最后一个参数用来给出终止符,默认值为‘\n’

3、使用read()读取若干字符

从输入流中读取指定书目的字符,并存放到指定的地方

cin.read(char *buf,int n); //从键盘上读取n个字符,存放在buf中。

课后习题答案:

一、选择题

1-5、ACBDB 6-10、CAACC 11-15、BAABD 16-17、DD

二、填空题

(1)ios (2)cout<<setiosflags(ios_base::hex) (3)cout<<setfill('*')<<setw(10)<<"Hello"; (4)123.45****

三、程序分析题

1、

xxxxxHello

2、

abcde,fgh

3、

happy

4、

1234.571234.571234.57+1234.57-1234.57+1.234568e+03

5、

#1234.571234.6+1234.6+1.23457e+03

6、

+1234.567890-1234.5681.23457e+03

四、程序填空题

1、

cout<<setiosflags(ios::scientific|ios::showpos);

2、

setiosflags(ios::showpoint|ios::fixed)setw(4)<<resetiosflags(ios::showpoint|ios::fixed)setw(5) << setiosflags(ios::showpos)

如果觉得《自考版《C++程序设计》04747 第七章 输入/输出流(附课后习题答案)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。