美文网首页
cin/cout双生子详解

cin/cout双生子详解

作者: 舟幽灵 | 来源:发表于2018-08-05 22:30 被阅读36次

    cin/cout归属于iostream类库中的两个对象,因为教材上经常能看见cin/cout在同一段代码中起到关键作用,我将其称为双生子进行详解。

    基本概念

    从字面上就十分容易理解,cin/cout其实可以拆分成c+in/out,顾名思义就是输入和输出的意思。从最常见的Hello World!程序中即可看出cout的作用为将引号内的文字打印到屏幕上,而从其他简单程序中可以理解cin的作用是将接收到的数据赋予给右边的变量。

    概念扩展

    • 类:描述数据类型的全部属性,其描述了一种数据类型是哪一种信息,并且可对此数据进行哪些操作。
    • 对象:以类为模板创建的数据,是符合类的规范的实体。
      假设类为全体X班同学,则对象指的是X班同学中的任意一位同学。
    • 重载:一个运算符或函数等在具有不同参数时具有不同的功能,具有不同功能的相同运算符或函数互相称为重载运算符或函数。

    新思路

    在此,我希望各位能转变一下思考方式,cin和cout的作用其实并不是显示一条信息或者是接受一条信息,其真实工作原理是驱动流式信息传输。假设有如下一段代码:

    cout << "hello World!";
    cin  >> test;
    

    首先解释第一行cout,右边引号内的内容为数据,可以想象为平静的液体,此时插入运算符<<,运算符决定了数据液体的流向,cout的作用可以想象为水泵,水泵的一头接着标准输出设备即屏幕,水泵的另一头接着数据液体,cout开始运作后,数据液体最终全部流向标准输出设备,最终打印在屏幕上。
    经过第一行的铺垫,cin的内容也不难理解。在用户输入数据并敲击回车时,cin开始工作。cin依旧是一台水泵,接受到的数据液体顺着>>运算符的方向流入名为的test的容器当中,test即为变量。也揭示了变量被定义的过程。

    cout的新玩法

    至此,正常进度学习的同学碰到的示例仅仅介绍了cout输出字符串的功能,接下来请看代码:

    int carrots=25;  //定义一个整型变量carrot为25
    cout << carrots;
    
    输出结果: 25
    

    此时我们发现,cout还有输出变量的功能,那么这和单纯的cout << "25"有什么区别呢?在上面的代码中,cout会十分智慧的识别到,carrots是一个整型变量,此时会将carrots替换成整型数值25输出,而直接输出字符串"25"的效果在屏幕上是看不出来的,而在机器内部的储存方式截然不同。整型数值,将作为数值以二进制的方式储存在计算机内存当中,而字符串则会将字符拆分,将"25"拆分成字符"2"和"5"分别以其编码存储。
    除了输出不同数据类型外,我们还可以输出多种数据类型,就像接水管一样,用运算符<<连接需要流式传输的数据,例如:

    int carrots = 25;
    cout << "I have"<<carrots<<"carrots.";
    
    输出结果:I have 25 carrots.
    

    此时我们发现,语句依旧符合我们的流式传输思想,数据液体以"I have"为首,以"carrots."为尾按顺序传输到了屏幕上,这就是cout的拼接

    相关文章

      网友评论

          本文标题:cin/cout双生子详解

          本文链接:https://www.haomeiwen.com/subject/jbdivftx.html