考试题型:主要在选择题、填空题,比分占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 第七章 输入/输出流(附课后习题答案)》对你有帮助,请点赞、收藏,并留下你的观点哦!