banner

。当cin操作到达文件末尾时,它将设置eofbit;当cin操作未能读取到预期的字符时(像前一个例子那样),它将设置failbit。I/O失败(如试图读取不可访问的文件或试图写入写保护的磁盘),也可能将failbit设置为1。在一些无法诊断的失败破坏流时,badbit元素将被设置(实现没有必要就哪些情况下设置failbit,哪些情况下设置badbit达成一致)。当全部3个状态位都设置为0时,说明一切顺利。程序可以检查流状态,并使用这种信息来决定下一步做什么。表17.5列出了这些位和一些报告或改变流状态的ios_base方法(老式编译器没有提供两种exceptions()方法)。

将一个新的函数操作符定义添加到ostream类声明中。但修改iostream文件是个危险的主意,这样做会在标准接口上浪费时间。更好的办法是,通过Time类声明来让Time类知道如何使用cout。

tips

1. <<的第一种重载版本 要使Time类知道使用cout,必须使用友元函数。这是什么原因呢?因为下面这样的语句: cout << trip; 使用两个对象,其中第一个是ostream类对象(cout)。如果使用一个Time成员函数来重载<<,Time对象将是第一个操作数,就像使用成员函数重载*操作符那样。这意味着必须这样使用<<: trip << cout<<"k="<<k<<endl; //输出k=4 if(CL.Prior(3,d)) //获取第3个元素7的前驱结点3 cout<<"d="<<d<<endl; //输出d=3 CL.Delete(3); //删除第3个结点7 CL.Show();  //显示8 2 3 6 5 CL.Clear(); //清空链表 CL.Show();  //显示无 } //栈——分析 //将书上的CStack.h和CStack.cpp两个文件拷贝到此处+下面的主函数文件=运行结果 // Main.cpp #include <iostre