ostream类的3个输出流对象cout,cerr,clog区别和使用

ostream类定义了3个输出流对象:cout,cerr,clog。

cerr和clog都是标准错误流,其区别是:cerr不经过缓冲区直接向显示器输出信息;clog中的信息存放在缓冲区,缓冲区满后或遇endl向显示器输出。

例:求解一元二次方程,若公式出错,用cerr流输出有关信息。

解:程序:

#include<iostream>

#include<cmath>

using namespace std;

int main()

{

float a, b, c, disc;

cout << "please input a,b,c:";

cin >> a >> b >> c;

if (a == 0)

{

cerr << "a is equal to zero,error!" << endl;

}

else if ((disc = b*b - 4*a*c) < 0)

{

cerr << "disc = b*b - 4*a*c< 0,error!" << endl;

}

else

{

cout << "x1=" << (-b + sqrt(disc)) / (2 * a) << endl;

cout << "x2=" << (-b - sqrt(disc)) / (2 * a) << endl;

}

system("pause");

return 0;

}

运行结果1:

please input a,b,c:0 2 3

a is equal to zero,error!

请按任意键继续. . .

运行结果2:

please input a,b,c:5 2 3

disc = b*b - 4*a*c< 0,error!

请按任意键继续. . .

运行结果3:

please input a,b,c:1 2.5 1.5

x1=-1

x2=-1.5

请按任意键继续. . .

时间: 2024-10-01 07:44:58

ostream类的3个输出流对象cout,cerr,clog区别和使用的相关文章

转:c++里关于cerr,clog,cout三者的区别

c++里关于cerr,clog,cout三者的区别: cerr(无缓冲标准错误)-----没有缓冲,发送给它的内容立即被输出 clog(缓冲标准错误)--------有缓冲,缓冲区满时输出 cout-------------------------标准输出 三个都是ostream类定义的输出流对象, cout是在终端显示器输出,cout流在内存中对应开辟了一个缓冲区,用来存放流中的数据,当向cout流插入一个endl,不论缓冲区是否漫了,都立即输出流中所有数据,然后插入一个换行符. cerr流对

ostream类重载的operator&lt;&lt;()函数

ostream类重载了operator<<()以识别不同的类型,如: int short  long unsigned int unsigned short unsigned long float double     long double  char  signed char unsigned char 这样cout就不用像C语言中的printf那样需要程序员自行匹配数据类型,如:printf("%s%d%f","hello world",32,3.

虚函数的使用 以及虚函数与重载的关系, 空虚函数的作用,纯虚函数-&gt;抽象类,基类虚析构函数使释放对象更彻底

为了访问公有派生类的特定成员,可以通过讲基类指针显示转换为派生类指针. 也可以将基类的非静态成员函数定义为虚函数(在函数前加上virtual) 1 #include<iostream> 2 using namespace std; 3 4 class base{ 5 public: 6 /*virtual*/ void who(){ //define this function to virtual will be normal 7 cout << "this is th

【C++】通过基类的指针变量访问派生类中由基类继承来的隐藏对象

//<img src="http://img.blog.csdn.net/20150512213309005?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG91ZG91d2ExMjM0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /> // 可以将一个派生类的对象的地址赋给其基类的指针变量,但

标准输入输出流对象

System类的静态成员变量,包括 System.in:InputStream类型的,代表标准输入流,默认状态对应于键盘输入. System.out:PrintStream类型的,代表标注输出流,默认状态对应于显示器输出. System.err:PrintStream类型的,代表标准错误信息输出流,默认状态对应于显示器输出. Scanner按照类型读取: 对输入流读取的信息进行转换,对信息赋予类型的一个处理流: 先建立一个字节输入流和字节输出流: 标准输入输出重定向到新建立的输入赎车流 建立一个

java中三种方式获得类的字节码文件对象

package get_class_method; public class ReflectDemo { /** * @param args */ public static void main(String[] args) { getClassObject1(); getClassObject2(); getClassObject3(); } public static void getClassObject1(){ Person p = new Person(); System.out.pr

【Java基础】Java类的加载和对象创建流程的详细分析

相信我们在面试Java的时候总会有一些公司要做笔试题目的,而Java类的加载和对象创建流程的知识点也是常见的题目之一.接下来通过实例详细的分析一下. 实例问题 实例代码 Parent类 1 package mytest.javaBase; 2 3 public class Parent { 4 int a = 10; 5 static int b = 11; 6 // 静态代码块 7 static { 8 System.out.println("Parent静态代码块:b=" + b)

Dynamics AX 2012 R2 无法创建类&quot;Excel.Application&quot;的COM对象

    Reinhard在做一个Excel导入项目时,发现X++代码一旦执行到Excel组件部分,就会报如下错误: 无法创建类"Excel.Application"的COM对象.请确保在计算机""上已正确注册该对象.     根据错误提示,我们先去组件服务中,查找名为Microsoft Excel Application的COM组件.     Reinhard并没有在COM组件列表中,找到该COM组件.我们知道,Microsoft Excel Application

Java类的加载和对象创建流程的详细分析

相信我们在面试Java的时候总会有一些公司要做笔试题目的,而Java类的加载和对象创建流程的知识点也是常见的题目之一.接下来通过实例详细的分析一下: package com.test; public class Parent { int a = 10; static int b =11; //静态代码块 static { System.out.println("parent静态代码块:b=" + b); b++; } //代码块 { System.out.println("P