内容正文:
输入/输出流
在第4.5节中介绍了函数的重载,所谓重载,就是重新赋予新的含义或功能。运算符重载就是对同一个运算符号赋予不同的含义,实现新的功能,通常这些新功能,即重载过程,需要用户自己定义。例如,对于运算符“+”,C++系统的定义是,用它对整数、实数进行加法运算,但操作数如果是复数或者对象,则该运算符无法实施计算。又如,运算符“<<”,在C++系统中它与cout配合使用实现输出功能,但若要用它实现位移或者其他操作,只有用户对其重新定义,才能实现重载功能,即新功能。
目录
第11章
C++程序设计案例教程
11.1 标准输入/输出流
C++将一些常用的流类对象进行了定义并内置在系统中,供用户直接使用。这些内置的用于设备间传递数据的对象称为标准流类对象,共有4个。其中,cin对象是与标准输入设备相关联的标准输入流,cout对象是与标准输出设备相关联的标准输出流,cerr对象是与标准错误设备相关联的非缓冲方式的标准输出流,clog对象是与标准错误输出设备相关联的缓冲方式的标准输出流。
目录
第11章
C++程序设计案例教程
11.1.1 标准输出流对象
Add your text in here
Click to add Text
输出求解ax2+bx+c=0的根时的错误信息
案例引入
从键盘输入a、b和c的值,求解一元二次方程ax2+bx+c=0的根。如果a=0或b2-4ac<0,方程会出错,要求使用cout对象和cerr对象将错误信息输出。
目录
第11章
C++程序设计案例教程
11.1.1 标准输出流对象
源代码展示
#include "stdafx.h"
#include <math.h>
#include <iostream.h>
int main(int argc, char* argv[])
{
float a,b,c,delta;
cout<<"请输入a,b,c的值:"<<endl;
cin>>a>>b>>c;
delta=b*b-4*a*c;
if(a==0)
cerr<<"a不能为0!"<<endl; //将出错信息插入cerr,由屏幕输出
else if (delta<0)
cerr<<"delta小于0,输入无效!"<<endl; //将出错信息插入cerr,由屏幕输出
else
{
cout<<"x1="<<(-b+sqrt(delta))/(2*a)<<endl;
cout<<"x2="<<(-b-sqrt(delta))/(2*a)<<endl;
}
return 0;
}
目录
第11章
C++程序设计案例教程
11.1.1 标准输出流对象
运行结果
程序分析
在求解一元二次方程ax2+bx+c=0的根时,如果a=0或者b2-4ac<0,即在这两个条件下求方程的根会出错,则系统会将出错信息插入cerr对象,并通过屏幕输出。
目录
第11章
C++程序设计案例教程
知识讲解
cerr是console error的缩写,指在控制台(显示器)显示出错信息。cerr流对象是标准出错流,cerr流已被指定为与显示器关联。cerr的作用是向标准输出设备输出有关出错信息。cerr与标准输出流cout的作用和用法差不多,区别在于:cout流通常将信息传送到显示器输出,也可以被重定向输出到磁盘文件;而cerr流中的信息只能在显示器输出。在调试程序时,往往不希望程序运行时的出错信息被送到其他文件,而要求在显示器上及时输出,这时应该用cerr。cerr流中的信息是用户根据需要指定的。
目录
第11章
C++程序设计案例教程
11.1.2 标准输入流对象
Add your text in here
Click to add Text
使用流提取运算符“>>”读取数据
案例引入
通过测试cin的真值,判断流对象是否处于正常状态。
目录
第11章
C++程序设计案例教程
11.1.2 标准输入流对象
源代码展示
#include "stdafx.h"
#include <iostream.h>
int main(int argc, char* argv[])
{
float score;
cout<<"请输入一个成绩:"<<endl;
while(cin>>score) //如果能从cin流读取数据cin的值为真,则执行循环体
{
if(score>=85)
cout<<score<<" 成绩不错!"<<endl;
if(score<60)
cou