第九章问题文件

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文件

9.3 练习题

1.在C++的输入输出操作中,“流”的概念如何理解?从流的角度说明什么是提取

操作?什么是插入操作?

2.系统预定义的流类对象中,cin和cout的功能是什么?

3.屏幕输出一个字符串有哪些方法?屏幕输出一个字符有哪些方法?

4.键盘输入一个字符串有哪些方法?键盘输入一个字符有哪些方法?

5.如何输出一个int型数值量的不同进位制?

6.如何输出一个浮点数的不同精度?

7.如何确定输出数据项的宽度?

8.采用什么方法打开和关闭磁盘文件?

9.写磁盘文件时有哪几种方法?

10.读磁盘文件时有哪几种方法?

11.如何确定文件的读指针或写指针的位置?如何改变读指针或写指针的位置?

l 2.流的错误状态如何处理?

9.4 作业题

一、选择填空

1.进行文件操作时需要包含( )文件。

A:iostream.h B.fstream.h C.stdio.h D.stdlib.h

2.使用操作子对数据进行格式输出时,应包含( )文件。

A.iostream.h B.fstream.h C。iomanip.h D.stdlib.h

答:C。

3.已知:int a,*pa=&a;输出指针pa十进制的地址值的方法是( )。

A.cout<<pa B.cout<<*pa

C.cout<<&pa D.cout<<long(&pa)

4.下列输出字符’A’的方法中,( )是错误的。

A.cout<<put(‘A’) B.cout<<’A’

C.cout.put(‘A’) D.char A=’A’;cout<<A

5.关于getline()函数的下列描述中,( )是错的。

A.该函数是用来从键盘上读取字符串的

B.该函数读取的字符串长度是受限制的

C.该函数读取字符串时遇到终止符便停止

D.该函数中所使用的终止符只能是换行符

6.关于read()函数的下列描述中,( )是对的。

A.该函数只能从键盘输人中获取字符串

B.该函数所获取的字符多少是不受限制的

C.该函数只能用于文本文件的操作中

D.该函数只能按规定读取所指定的字符数

7.在ios中提供控制格式的标志位中,( )是转换为十六进制形式的标志位。

A.hex B.oct C.dcc D。1eft

8.控制格式输出输入的操作子中,( )是设置域宽的。

A.ws B.oct C.setfill() D,setw()

9.磁盘文件操作中,打开磁盘文件的访问方式常量中,( )是以追加方式打开文件的。

A.in B.out C.app D.ate

10.下列函数中,( )是对文件进行写操作的。

A.get() B.read() C.seekg() D.put()

二、判断下列描述的正确性,对者划√,错者划×

1.使用提取符(<<=可以输出各种基本数据类型的变量的值,也可以输出指针值。2.预定义的插入符从键盘上接收数据是不带缓冲区的。

3.预定义的提取符和插入符是可以重载的。

4.记录流的当前格式化状态的标志字中每一位用于记录一种格式,这种格式是

不能被设置或清除的。

5.设置和清除格式标志字的成员函数需要通过对象来引用它们,输出显示格式

的对象通常是cout。

6.操作子本身是一个对象,它可以直接被提取符或插入符操作。

7·get()函数不能从流中提取终止字符,终止字符仍留在流中。getline()函数可

以从流中提取终止字符,但终止字被丢弃。

8.ios类的成员函数clear()是用来清除整个屏幕的。

9.使用打开文件函数open()之前,需要定义一个流类对象,使用open()函数来

操作该对象。

10.使用关闭文件函数close()关闭一个文件时,但流对象仍存在。

11.以app方式打开文件时,当前的读指针和写指针都定位于文件尾。

12.打开ASCII码流文件和二进制流文件时,打开方式是相同的。

13.read()和write()函数可以读写文本文件,也可以读写二进制文件。

14.流的状态包含流的内容、长度和下一次提取或插入操作的当前位置。15·.seekg()函数和seekp()函数分别用来定位读指针和写指针的。如果使用

seek()函数可以同时定义读写指针。

三、分析下列程序的输出结果

1

#include<iostream.h>

#include<fstream.h>

#include<stdlib.h>

void main( )

{

fstream outfile,infile;

outfile.open(“text.dat”,ios::out);

if(!outfile)

{

cout<<”text.dat can’t open.\n”;

abort();

}

outfile<<”123456789\n”;

outfile<<”aaabbbbbbbbccc\n”

<<”dddddfffeeeeggggghhh\n”;

outfile<<”ok\n”;

outfile.close();

infile.open(”tcxt.dat”,ios::in);

if(!infile)

{

couI<<”file can’t open.\n”;

abort();

}

char textline[80];

While(!infile.eof())

{

infile.gctline(textline,sizeof(textline));

cout<<textline<<endl;

分析:

该程序中先打开文件text.dat,打开方式是写,判断打开成功后,向该文件中输入

行字符串。然后,将该文件关闭。

接着,以读方式打开text.dat文件,判断成功后,将通过while循环语句。逐行读:text.dat文件中的内容,并输出显示在屏幕上。

这里,使用了打开、关闭文件的操作以及对打开文件的读、写操作。

2.

#include<iostream.h>

#include<fstream.h>

#include

void main()

{

fstream file1;

file1.open(“text1.dat”,ios::out|ios::in);

if(!file1)

{

cout<<”text1.dat can’t open.\n”;

abort();

}

char textline[]=”123456789abcdefghijkl.\n”;

for(int i=0 ; i

file1.seekg(0);

char ch;

while(file1.get(ch))

cout<<ch;

filel.close( );

分析:

该程序的特点是打开文件textl.dat时,采用了又写又读的打开方式。打开成功后,先使用写字符函数put(),将字符数组textline[]中的字符串写入该文件。

然后,使用下列语句

filel.seekg(0);

将读指针移至文件开始,接着使用读字符函数get()从文件中读出字符,并显示在屏幕上。

该程序中,对文件textl.dat的读写只打开一次。

#include<strstrea.h>

void main()

{

ostrstream ss:

ss<<”Hi,good morning”;

ss<<ends:

char * buf=ss.str( );

cout<<buf<<endI;

de1ete[] buf;

}

分析:

程序中首先创建一个ostrstream类的对象ss,ss是一个用来存放插人数据的数组对象。接着,向s s中存人字符串”Hi,g ood morning!”。又增加一个字符串结束符‘\o’,可用end2表示。

程序中又定义—个字符指针.使用ss数组对象的指针值进行初始化,这一功能用成员函数sltr()来实现的。最后。输出显示一个字符串(buf中的字符串)在屏幕上。

4

#include<iostream.h>

#include<strstrea.h>

char a[]=”1000”;

void main()

{

int dval,oval,hval;

istrstream iss(a,sizeof(a));

iss>>dec<

iss.seekg(ios::beg);

iss>>oct>>oval;

iss.seekg(ios::beg);

iss>>hex>>hval;

cout<<”decV al:”<

cout<<”otcV al:”<

cout<<”hexV al:”<

}

分析:

程序中定义一个istrstream类的对象iss,先执行下列语句:

iss>>dec>>dval;

将字符数组a[]中的字符串,按十进制方式提取后放人变量dV al中,即为十进制数1000

然后,使用seekg()函数将读指针移至字符流开始处,再执行下列语句:iss>>oct>>oval;

将字符数组a[]中字符串,从头开始按八进制提取放入变量oval中,即为olooo,

进制为512。接着,同理又将字符数组a[]中字符串,从头按十六进制提取放入变量hval 中,即为ox1000,化为十进制为4096。

最后,输出显示dval,oval和hval值,如上所示。

相关文档
最新文档