cerr, cout , clog

2024-03-11 22:08
文章标签 cout cerr clog

本文主要是介绍cerr, cout , clog,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

三个都是ostream类定义的输出流对象,

cout是在终端显示器输出,cout流在内存中对应开辟了一个缓冲区,用来存放流中的数据,当向cout流插入一个endl,不论缓冲区是否漫了,都立即输出流中所有数据,然后插入一个换行符.

cerr流对象是标准错误流,指定为和显示器关联,和cout作用差不多,有点不同就是cout
通常是传到显示器输出,但可以被重定向输出到文件,而cerr流中的信息只能在显示器输出.

clog流也是标准错误流,作用和cerr一样,区别在于cerr不经过缓冲区,直接向显示器输出信息,而clog中的信息存放在缓冲区,缓冲区满或者遇到endl时才输出.

Code:
  1.      // test.cpp         
  2.         
  3.   #include <iostream.h>         
  4.         
  5.    int  main()         
  6.         
  7.   {         
  8.         
  9.   cout <<  "hello world---cout"  << endl ;         
  10.         
  11.   cerr <<  "hello world---cerr"  << endl ;         
  12.         
  13.    return  0;         
  14.         
  15.   }         
  16.       

在命令行模式下键入下面的命令:

  test >>cout.txt

  运行结果是:

  在生成的cout.txt文件中输出了"hello world---cout"

  同时在显示器上输出了"hello world---cerr"

  也就是说cout的输出可以重定向到一个文件中,而cerr必须输出在显示器上。

  clog流也是标准错误流,作用和cerr一样,区别在于cerr不经过缓冲区,直接向显示器输出信息,而clog中的信息存放在缓冲区,缓冲区满或者遇到endl时才输出.

  对于为什么有cerr和clog

  比如,你的程序遇到调用栈用完了的威胁(无限,没有出口的递归)。

  你说,你到什么地方借内存,存放你的错误信息?

  所以有了cerr。其目的,就是在你最需要它的紧急情况下,还能得到输出功能的支持。

  缓冲区的目的,就是减少刷屏的次数——比如,你的程序输出圣经中的一篇文章。不带缓冲的话,就会每写一个字母,就输出一个字母,然后刷屏。有了缓冲,你将看到若干句子“同时”就出现在了屏幕上(由内存翻新到显存,然后刷新屏幕)。

这篇关于cerr, cout , clog的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/799225

相关文章

Postgresql CLOG文件及其从库同步解析

放眼所有关系型数据库,PostgreSQL的clog也是很特殊的日志。CLOG的存在跟PG的MVCC机制不无关系。一些事务ID、clog的基础知识本篇不会涉及,感谢兴趣的可参考clog和hintbits。本篇主要讲clog文件的构成、手工定位事务状态、clog的wal日志同步机制,以进一步理解PostgreSQL的clog。 clog segment clog目录 为了区别普通日志,PG 1

【c++】cout打印char * 或者char[]的细节详解

目录  char* 类型 1.打印指向的字符串 2.打印指针指向的地址 问题描述 解决方法 char型数组  1. 想要输出字符串 2. 想输出字符数组的地址 printf 和cout 的对比 1.打印首字符 2.打印字符串 3.打印字符串首地址 💗感谢阅读!💗  char* 类型 1.打印指向的字符串 使用cout输出 指针,会直接打印指针指向的具体内容!

cout输出时控制双精度的精确度

首先包含头文件:#include <iomanip> 如果是保留d位有效数字,则为: cout << setprecision(d) << num<< endl; 如果小数点后保留d位,则为: cout << setiosflags(ios::fixed) << setprecision(d) << num<< endl;

C++入门教程(2)让计算机跟我读(cin,cout,while)

书接上回,通过print("str");可以让计算机输出我们想让计算机输出的字符串,但是每次都要修改传入的str字符串,而且每次都是固定的字符串,有些呆板。现在我们稍微提高下难度,让计算机实现我们输入什么,计算机就输出什么。直接上代码 #include <iostream>using namespace std;int main(int argc, const char

C++入门教程(1) 一切从Hello,World开始说起(cout)

前言         Hello,Wolrd 是C语言的第一个演示程序,运行后可以在控制台输出“Hello World”这行字符串。一般来说,学习任何编程语言都会先从Hello Wolrd程序开始入手,无论用哪种编程语言,如果你可以让计算机任意的输出一段文字,则表示你可以通过一门编程语言来和计算机进行交互。即你掌握了和计算机交谈的方法。 Mac环境用Xcode运行Hello Wor

关于 c++ cout << endl; 的源码解释

这行语句非常常用。以前在王老师课上,老师提到过 endl 是一个函数模板。现给出这行语句的相关源码: 反汇编的依据如下: 接着是 谢谢

cout.write()函数

除了使用预定义的插入符进行屏幕输出,cout<<“ ” 还可以使用write函数: 显示器输出一个字符串函数,使用格式如下 cout.write(const char * str, int n) 其中,str是一个用来存放字符串的字符指针或字符数组名,也可以 用一个字符串常量。 n指定输出的字符个数。   s="hello, world!" cout.write(s,strlen(s

C++(printf/cout等打印函数)中文输出乱码问题

C++中文输出乱码的问题,除去系统字符集格式等常见原因外,还有可能是“N方字符集”不一致导致的。这个N通常是3,即.cpp,.h,.hpp源文件编码格式、编译器对源文件解释用的编码格式、执行文件的编码格式。 1. Windows下VS工具通常建议将“3方字符集”设置成GBK(Winows-936)编码格式; 当然,如果你不想使用GBK格式,也可通过菜单栏的文件—高级保存选项—编码,选择需要编码格

c++中利用cout输出8进制,16进制

#include<iostream>using namespace std;int main(){int a=26;cout<<hex<<a<<endl;cout<<oct<<a<<endl;cout<<dec<<a<<endl;return 0;}

【C++】浅论(cin和cout)的解锁、缓冲区的理解、CC++输入方法汇总和详解

一、cin,cout解锁 1.1:cin,cout解锁以及why 首先cin和cout是在c++中为了提供类型安全和易用性设计的,它兼容了c语言的输入和输出,以上几点导致它在性能行(读取和输出速度)远不如传统c语言的输入和输出。 在看到一些代码里面,会在main函数开头加上这两行代码,叫做对cin和cout解锁,使用之后确实能对性能有一定的提升: ios::sync_with_stdio(