问题:

c++中输出通常信息的函数为cout,比如:std::cout << "Hello world";

在异常处理机制中则使用cerr来输出错误信息,比如:std::cerr << "Error: too many arguments\n";

那么,cout和cerr的区别是什么呢?

解决办法:

1. 摘录一段《C++ Primer》第五版P319中关于cout与cerr的区别的描述:
和cout一样,cerr也是一个ostream对象。

它们之间的区别在于:

重定向操作只影响cout,而不影响cerr;

cerr对象仅用于错误消息。

因此,如果将程序输出重定向到文件,并且发生了错误,则屏幕上仍然会出现错误消息。

在UNIX系统中,可以分别对cout和cerr进行重定向,命令行操作符>用于对cout进行重定向,操作符2>对cerr进行重定向。

因为,系统的SHELL里一般约定1为正确流,2为错误流。而1是作为缺省值使用可以省略不写。

2. 示例代码:

# test_cerr.cpp
#include <iostream>using namespace std;int main() {cout << "hello world---cout" << endl ;cerr << "hello world---cerr" << endl ;return 0;
}

编译test_cerr.cpp:

g++ test_cerr.cpp -o test_cerr

运行不同的重定向命令:

u1204@u1204-zhw:~/wrk/tmp/cpp_src/cpp_exer$ ./test_cerr 2> test_cerr.txt
hello world---cout
u1204@u1204-zhw:~/wrk/tmp/cpp_src/cpp_exer$ ./test_cerr > test_cout.txt
hello world---cerr
u1204@u1204-zhw:~/wrk/tmp/cpp_src/cpp_exer$ cat ./test_cerr.txt
hello world---cerr
u1204@u1204-zhw:~/wrk/tmp/cpp_src/cpp_exer$ cat ./test_cout.txt
hello world---cout
u1204@u1204-zhw:~/wrk/tmp/cpp_src/cpp_exer$

cout和cerr的区别相关推荐

  1. C++中cout和cerr的区别?

    之前一直在用,但就是没在意两者到底有啥却别,今天又想到这个问题,总结下吧(以下的内容均是本人从网上查阅资料看来整理的,暂时还没有查阅官方资料,不保证准确,欢迎讨论) 其实大家平常常会用的主要有三个:c ...

  2. C++中cout和cerr的区别

    标准IO库定义的其中3个IO对象: 一个istream类型对象:cin 两个ostream对象:cout,cerr cin:读取标准输入的istream对象,对应于标准输入流(关联到标准输入设备,通常 ...

  3. cout 和cerr的区别

    总结了一下,主要有几点,欢迎指正. 1.cout对应于标准输出流 cerr对应于标准错误流 2.cout可以重定向,cerr不可以. 3.cout要分配缓冲,cerr不用,所以从理论上来说,cerr输 ...

  4. cin、cout、cerr、clog用法区别及其在VS环境下的重定向

    今天学习C++,发现C++中的输出流除了常用的cout,还有cerr和clog两种输出流对象,由于之前没有遇到过,所以特地查了一下用法,记录一下. 1.      cin.cout.cerr.clog ...

  5. c++中cout、cerr、clog的区别

    之前一直在用,但就是没在意两者到底有啥却别,今天又想到这个问题,总结下吧(以下的内容均是本人从网上查阅资料看来整理的,暂时还没有查阅官方资料,不保证准确,欢迎讨论) 其实大家平常常会用的主要有三个:c ...

  6. 【自学C++】C++ cout clog cerr区别

    C++ cout clog cerr区别 C++ cout clog cerr区别教程 在 C++ 中的 std 命名空间中,用于输出的不仅仅只有 cout,还有 clog 和 cerr,分别用于输出 ...

  7. C++入门系列---cout、cerr、clog 三者的区别

    先来看一下C++Primer(第四版)定义了4个IO对象,供大家参考: "标准库定义了4个IO对象,处理输入时使用命名为cin的istream类型对象,这个对象也成为标准输入.处理输出时使用 ...

  8. 【C++】cout、cerr、clog之间的区别

    cout.cerr.clog三者都是标准IO库中提供的输出工具. 但是cout是支持重定向操作的.比如freopen()对于cout有效.clog和cerr主要用于错误输出.因此,如果将程序输出重定向 ...

  9. cout、cerr、clog

    其实大家平常常会用的主要有三个:cout.cerr.clog,首先简单介绍下三者. 这三者在C++中都是标准IO库中提供的输出工具(至于有关的重载问题在此不讨论): cout:写到标准输出的ostre ...

最新文章

  1. 大一计算机在线考试,Word 大一计算机考试操作题
  2. FlexUnit单元测试(第三章FlexUnit事件断言)
  3. Synchronized和Lock区别
  4. SpringMVC日期处理(二)
  5. 京东电商广告和推荐的机器学习系统实践
  6. JDBC学习(三、DDL、DML和DQL)
  7. Proteus仿真Arduino的Proteus Library文件下载
  8. windows10 LTSC转换成win10专业版
  9. 第十二章:如何制定里程碑
  10. Linux安装软件提示MD5不同,如何在Debian/Ubuntu Linux中校验已安装软件包的MD5和?
  11. vi命令下编辑文件时,按insert键文件底部不出现“INSERT”问题
  12. python转写java踩坑记录
  13. 【Python 23】52周存钱挑战3.0(循环计数for与range)
  14. 即时聊天工具二次开发
  15. 路由协议之:WSN网络的RPL路由协议 for 6LOWPAN
  16. Linux搭建MQTT服务器(Mosquitto)
  17. 【淘宝】图片放大 代码
  18. C#获取打印机状态(1)——System.Management
  19. Java中使用for循环打印99乘法表
  20. 计算机没有autoCAD_计算机辅助设计3D软件大全autocad2010 2014 2018

热门文章

  1. 2022/9/5 嵌套路由(靠路由在vue里渲染套渲染),动态路由匹配以及开启propos配置动态路由
  2. 如何上手机上不了无线网络连接服务器,手机连接不上路由器无线网络怎么处理...
  3. 关于人工智能不会使大脑变懒惰的议论文_自律,拒绝懒惰和放纵,不枉余生
  4. 【应用案例】AGV小车的运动控制方案
  5. Cjson 库的使用
  6. AutoMapper的使用方法
  7. 英特尔® Distribution of OpenVINO™ toolkit 2021 版的发布说明
  8. UE4-(蓝图)第二十四课UI主菜单(UI主菜单功能、镜头过渡,控制权切换)
  9. 2021年Vue最常见的面试题以及答案(面试必过)
  10. 对于信息安全与管理的理解