流类与输入输出

  流类法与输入输出     

 

1. 如何理解流的概念? 流的插入和提取指的是什么?

 

解:

C++中,输入输出是通过流来完成的。所谓“流”是指数据从一个位置到另一个位置的流动抽象为“流”。当数据从键盘流到C++程序中时,这样的流称为“输入流”(或提取),而当数据从程序中流向屏幕或键盘时,这样的流称为“输出流”(或插入)。操作系统是将键盘、屏幕、打印机等作为一种扩充文件来处理,I/O流类负责与这些扩充文件交互信息,实现数据的输入和输出。

 

2. 标准输入流中的coutcerrclogcin 作用是什么?有何区别?

 

解:

C++提供了4个预定义的标准流对象:cincoutcerrclog。当用户在程序中包含了头文件“iostream.h”时,编译器调用相应的构造函数,长生四个标准流对象,用于处理标准输入,即键盘输入;coutostream类的对象,用于处理标准输出,即屏幕输出;而cerrclog都是ostream类的对象,用来处理标准出错信息,并将信息显示在屏幕上。在这四个标准流对象中,除了cerr不支持缓冲外,其余3个都有缓冲区。

 

3.写出下列程序的输出结果。

 

4.假设有一个文件f1.txt ,编写程序主文件f2.txt ,将f1.txt 中所内容拷贝到f2.txt 中。VC++教程 p147

 

5.有一个字符串“1 2 3 4 5 6 7 8 9 10 存放在字符数组中,中间以空格分隔。要求以10个整数形式将其取出,存放另一个整型数组,然后输出。

 

6.重载提取(>>)和插入(<<)运算符,使其可以实现对Point类的对象的输入和输出,并利用重载后的运算符,从键盘读入点坐标,写到磁盘文件Point.txt中。

 

7.已知磁盘文件file1中的内容为一组字母“a c b k l i j h f x s”,磁盘文件file2中的内容为一组字母“d p o m n w e r v u”,把两个文件的字母按顺序排列后,存入新文件file3中。

 

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

 

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

 

10.设计一个学生类Cstudent,包含数据成员:姓名,学号,一门课成绩。创建5个对象并将5个学生记录存入文件Sfile中,然后移动文件指针,读取相应记录,将读取的每一条记录都输出到屏幕上。 VC教程p148

 

 

4.定义一个具有数组性质的类,对流类重载运算“[ ]”实现数组元素的访问。要求在操作符“[ ]”重载函数中对下标进行检查,越界时抛掷一个异常对象。

 

5.读程序“C++程序设计教程” p299

 

6.修改习题4 。设计一个数组尺寸异常类,在数组类的构造函数中如果发现数组尺寸不符,则抛出一个Size异常对象。

 

7.举例说 try throw catch的用法。

 

8.定义一个堆栈类(如例519),利用异常类的派生类数组处理栈的上溢(overflow)和下溢(underflow.

 

实验:用枚举组织处理多个异常。

enum Matherr{overflow,underflow,zerodinide …}

P280(C++程序设计教程)

 

 

习题8

class Error

{  };

class overflow : public Error

{  };

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.    什么是异常?什么是异常处理?

 

在编写程序时,总是会不可避免的遇到一些问题。尤其是在设计一个类时。总要包含一些错误处理。同时,由于面向对象提倡的可重用性,同一个类不仅类的书写者要用,其他人也可以用,这就要求类中的错误处理应该考虑到不同的使用者的需要,一般可能直接中止。C++提供了异常处理机制,它把错误检查和错误处理分开;如类专门检查各种可能出现的错误,类的使用者则提供具体的错误处理程序。

C++提供了三个关键类来对异常进行处理:

try:可能抛出异常的程序段必学以try开始。

throw:异常要通过关键类throw抛出。

Catch:处理异常的程序必须以catch开始。

 

3. C++异常处理有哪些特点?

 

    异常处理的思路是:发现错误的函数可以不具有错误处理的能力。这个函数会引发一个异常,希望它的调用者能捕获这个异常并处理这个错误。如果调用者也不能处理这个错误,还可以连续给上调者和处理,这种传播会一直继续到异常被处理为止。这样低层的函数可以着重解决具体问题。上层调用者来考虑对不同的异常进行相应的处理。

 

4. 举例说明异常关键类try throw catch 的用法。

 

异常处理的语法:

throw   表达式   //抛出异常

try:

    try   复合语句

        catch (异常类型声明)

          复合语句

        catch (异常类型声明)

          复合语句

         

       

 

必须使用try语句来捕获异常。在执行try后的复合语句中或在一个函数调用中出现异常。它总是跟在一个try程序块后面处理try程序块产生的异常。

例如:

try{

    int m=n;

    cin>>dis>>n;

    if(n==0)

        throw n;

    cout<<"m/n"<<m/n;

    }

    catch (int)

    {cout<<"error of devary zero/n";}

 

3C++异常处理中怎样处理够造与析构的关系?

 

C++异常处理的正真能力,不仅在于它能够处理不同类型的异常,同时它具有异常抛掷前构造的所有局部对象自动释放的能力。程序中如果在try块中定义了类对象,当出现异常时,从try块开始到抛出异常之间构造的所有自动对象进行析构,析构的顺序与构造的顺序相反。

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值