clog对象跟c语言标准设备对应,C++ 输入输出(cout、cin、cerr、clog)

本文详细介绍了C++中的输入输出流,包括输入输出的基本概念、标准输入输出、文件I/O和串I/O。重点讲解了cin、cout、cerr和clog的使用,cin用于从键盘获取输入,cout用于屏幕显示,cerr不经过缓冲直接输出错误信息,clog是缓冲版的标准错误流。文章通过实例展示了这些流的运用,帮助读者理解C++的I/O操作。
摘要由CSDN通过智能技术生成

1、输入输出

C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,是输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),是输出操作。

2、C++ I/O 库头文件

对系统指定的标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。以外存磁盘文件为对象进行输入和输出,即从磁盘文件输入数据,数据输出到磁盘文件。以外存文件为对象的输入输出称为文件的输入输出,简称文件I/O。

对内存中指定的空间进行输入和输出。通常指定一个字符数组作为存储空间(实际上可以利用该空间存储任何信息)。这种输入和输出称为字符串输入输出,简称串I/O。具体如下表:头文件函数和描述

该文件定义了

cin、cout、cerr

clog

对象,分别对应于标准输入流、

标准输出流、

非缓冲标准错误流和缓冲标准错误流。

该文件通过所谓的参数化的流操纵器(比如

setw和setprecision),

来声明对执行标准化 I/O 有用的服务。

该文件为用户控制的文件处理声明服务。

我们将在文件和流的相关章节讨论它的细节。

3、cout标准输出

cout 可用于在计算机屏幕上显示信息,程序可以显示的最简单的屏幕输出类型是控制台输出,它只是纯文本。 cout 是 iostream 类的一个实例。cout 是与流插入运算符 <

例如,#include

using namespace std;

int main()

{

cout << "C++ " << endl;

cout << "c java python " << "is cjavapy";

return 0;

}

注意:流插入运算符 << 在一个语句中可以多次使用。endl 用于添加一个换行符。

4、cin标准输入

cin 可用于从键盘获取用户输入,程序中可以获取用户输入信息。 cin 是 iostream 类的一个实例。cin 是与流提取运算符 >> 结合使用的。

例如,#include

using namespace std;

int main()

{

char a;

int b;

float c;

cin >> a >> b >> c;

cout << a <

return 0;

}

注意:流提取运算符 >> 在一个语句中可以多次使用,获取输入的多个数据。

5、cerr标准错误

cerr 是 iostream 类的一个实例。cerr不经过缓冲而直接输出,一般用于迅速输出出错信息,是标准错误,默认情况下被关联到标准输出流,但它不被缓冲,也就说错误消息可以直接发送到显示器,而无需等到缓冲区或者新的换行符时,才被显示。cerr 也是与流插入运算符 << 结合使用的。

例如,#include

using namespace std;

int main()

{

cout << "cout" << endl;

cerr << "cerr" << endl;

return 0;

}

6、clog标准日志流

clog是cerr的缓冲版本。对于cout和cerr及clog都是c++内置的输出流。如果你用clog来输出的话,则隐含的信息就是你输出的是错误信息。 clog 对象是缓冲的。这意味着每个流插入到 clog 都会先存储在缓冲区,直到缓冲填满或者缓冲区刷新时才会输出。clog 也是与流插入运算符 << 结合使用的。

例如,#include

using namespace std;

int main( )

{

char str[] = " c java py";

clog << "cjavapy" << str << endl;

}

////////////////////////////////////////////README//////////////////////////////////////////////////// // DebugLog--write some log for debug // //初衷: 版本开发的时候,有些功能点是可以项目无关的,比如是解析某个文件;开发完成之后,测试的话, // // 需要整改项目程序运行、测试,功能点的触发条件比较麻烦。所以,有的时候,对于这样的功能点, // // 我会选择进行本地开发,然后再合到项目中去. // // 但是,每次功能点开发的时候,一般用的是printf直接打屏,但是项目中用的是写文件,所以移植 // // 的时候还需要进行不少改动. // // 于是,我就想自己写个log,可以与项目的日志函数进行适配。那么,上面的问题可以得到比较好的 // // 解决(或者说是规避)。 // //附注:我不知道这样做有没有意义,也就是根据自己的经验,试着做了下。经验不足,水平有限,肯定会 // // 导致设计不足,不对,甚至是整个设计没有意义。如果是这样,希望能不吝交流、赐教. // // EMail: hu__haifeng@163.com // ////////////////////////////////////////////////////////////////////////////////////////////////////// //Version :0.5 // //Description:该版本打造了基本的架构,并且实现了不带参数的打印日志(仅仅是字符串),可以进行监督的测试.// // 由于我项目经验有限,仅仅见过两种不同的项目日志分隔,所以也只能以此为参考,不一定可以 // // 适配其他项目日志函数. // //Adapter :可以用宏定义来进行适配。比如: // // #ifdef __CLOG_H__ // // #define DEBUG(VAR) mylog.Print(__FILE__, __LINE__, VAR, LOG_DEBUG) // // #else // // #define DEBUG(VAR) function //项目用的标准的日志函数. // // #endif // // // //Plan :1.0版本写成可以带参数的日志。2.0版本实现客户端、服务器版本(可以支持不同的进程写日志)。// //////////////////////////////////////////////////////////////////////////////////////////////////////
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值