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

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

1.      cin、cout、cerr、clog的用法区别

 经典教材《C++Primer》第五版中解释到:标准库定义了 4 个 IO 对象。处理输入时使用命名为 cin的 istream 类型对象。这个对象也称为标准输入。处理输出时使用命名为 cout的 ostream 类型对象,这个对象也称为标准输出。标准库还定义了另外两个ostream 对象,分别命名为 cerr 和 clog。cerr 对象又叫作标准错误,通常用来输出警告和错误信息给程序的使用者。而 clog 对象用于产生程序执行的一般信息。一般情况下,系统将这些对象与执行程序的窗口联系起来。这样,当我们从cin 读入时,数据从执行程序的窗口读入,当写到 cin、cerr 或 clog 时,输出写至同一窗口。运行程序时,大部分操作系统都提供了重定向输入或输出流的方法。利用重定向可以将这些流与所选择的文件联系起来。

 综合个人所查资料总结一下:

cin通过重载移位操作符>>实现数据流的输入;

cout、cerr、clog通重载移位操作符<<实现数据流输出,其中cout为标准输出流,在内存中开辟有缓存区,当缓存区满或者插入换行符endl时输出缓冲区中数据流到显示器;

cerr、clog均为标准错误流输出,不同的地方在于cerr输出不经过缓冲区,产生之后立即输出,故用于输出即时性的警告和错误消息,而clog则会首先输出到缓冲区,因此用于输出程序执行时产生的一般信息。

2.      cin、cout、cerr、clog在VS2012环境下的重定向

 在调试程序时,经常会需要输入大量数据或者收集输出的数据信息,在这种情况下,可以采用重定向将输入输出流与特定文件联系起来,方便快捷,可以节省大量的时间精力,接下来演示如何在vs2012环境下实现四种io流的重定向。

 对于cin的 重定向,首先应将需输入数据整理到目标文件,例如记为data.txt,然后将该文件放在解决方案的源码路径下,点击项目->属性,或者直接Alt+F7,打开对话框后找到左侧调试二级菜单,选择命令参数,键入"<data.txt"

之后点击确定,运行程序即可。对于cout的重定向,则是在命令参数中键入">target.txt",则会在源码路径下生成target.txt存放cout的输出。如果想要同时实现cerr及clog的重定向,则是需要在命令行中键入“>target.txt 2>&1”,则会在target.txt中同时存放cout、cerr和clog的输出信息。


  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值