C++中cout和cerr的区别?
来源:互联网 发布:如何自学数控编程3个月 编辑:程序博客网 时间:2024/06/08 18:28
其实大家平常常会用的主要有三个:cout、cerr、clog,首先简单介绍下三者。‘
cout:写到标准输出的ostream对象;
cerr:输出到标准错误的ostream对象,常用于程序错误信息;
clog:也是输出标准错误流(这点儿和cerr是一样的),貌似平时很少用到这个啊;
具体在输出的时候,三者是有区别的:
1、cout经过缓冲后输出,默认情况下是显示器。这是一个被缓冲的输出,是标准输出,并且可以重新定向(关于重新定向的意思可以参考下面的例子);
对于为什么有cerr和clog?
比如,你的程序遇到调用栈用完了的威胁(无限,没有出口的递归)。你说,你到什么地方借内存,存放你的错误信息?
所以有了cerr。其目的,就是在你最需要它的紧急情况下,还能得到输出功能的支持。
附:
#include <iostream>
using namespace std;
int main()
{
cout << "cout" << endl;
cerr << "cerr" << endl;
return 0;
}
运行此程序之后,我们在命令行执行如下命令:
假设编译运行后的可执行文件名为cerr.exe,其目录为E:\cpro\cerr\Debug\cerr.exe
在命令行下,切换到这个目录下,执行命令:cerr>test.log
命令行输出如下:
E:\cpro\cerr\Debug>cerr>>test2.log
Cerr(这是在命令行下输出的)
查看test2.log文件,发现里面只有
cout
一行。
可能这个就是所谓的重定向输出。
从这里可以看出:
cerr流对象是标准错误流,指定为和显示器关联,和cout作用差不多,有点不同就是cout 通常是传到显示器输出,但可以被重定向输出到文件,而cerr流中的信息只能在显示器输出.
今天看C++Primer(第四版)的时候又看到了这几个,摘抄一段话,供大家参考:
"标准库定义了4个IO对象,处理输入时使用命名为cin的istream类型对象,这个对象也成为标准输入。处理输出时使用命名为cout的ostream类型对象,这个对象也称为标准输出。标准库还定义了另外两个ostream对象,分别命名为cerr和clog。cerr对象又叫标准错误,通常用来输出警告和错误信息给程序的使用者,而clog对象用于产生程序执行的一般信息。一般情况下,系统将这些对象与执行窗口联系起来,这样,当我们从cin读入时,数据从执行程序的窗口读入,当写到cout、cerr、clog时,输出写至同一窗口。运行程序时,大部分操作系统都提供了重定向输入或者输出流的方法。利用重定向可以将这些流与所选择的文件联系起来"
1 0
- c++中cerr和cout的区别
- c++中cerr和cout的区别
- C++中cout和cerr的区别?
- C++中cout和cerr的区别
- C++中cout和cerr的区别?
- C++中cout和cerr的区别?
- C++中cout和cerr的区别?
- C++中cout和cerr的区别?
- c++中cout和cerr的区别
- C++中cout和cerr的区别
- C++中cout和cerr的区别?
- cout 和cerr的区别
- cout和cerr的区别
- cerr和cout的区别
- c++中cout、cerr、clog的区别
- C++中cout、cerr、clog的区别
- C++中cout,cerr,clog的区别
- C++中cout,cerr,clog的区别
- FLAG_EXCLUDE_STOPPED_PACKAGES与FLAG_INCLUDE_STOPPED_PACKAGES
- ArrayList&LinkedList;HashMap&HashTable
- CodeForces 670A Holidays 火星人的假期
- Java/Android中汉字转拼音的两种方法,优劣比较
- c++基础:判断闰年
- C++中cout和cerr的区别?
- MySQL修改参数
- Wet Shark and Bishops
- tomcat源代码调试-maven篇
- 静态链接库(LIB)和动态链接库(DLL),DLL的静态加载和动态加载,两种LIB文件。
- 用urllib.request 写一个翻译脚本
- c++第六次作业
- Java关键字及保留字
- 每天刷个算法题20160519:回溯法解八皇后