(三十一)cout.put()

以下还是不太明白,概念是抄的。

函数cout.put()是一个重要的C++ OOP(面向对象函数)概念——成员函数——的第一个例子。类定义了如何表示和控制数据。成员函数归类所有,描述了操纵类数据的方法。例如类ostream里面有一个put()成员函数,用于输出字符。只能通过类的特定对象(例如这里的cout对象)来使用成员函数。要通过对象(如cout)来说用成员函数,必须用句点将对象名和函数名称(put())连接起来,句点被称为成员运算符。cout.put()的意思是,通过类对象cout来使用函数put()。目前接触的类是istream和ostream,可以通过使用它们的成员函数来熟悉这个概念。

cout.put()成员函数提供了另一种显示字符的方法,可以替代<<运算符。现在读者可能会问,为何需要cout.put()。答案和历史有关。在C++的Release 2.0之前,cout将字符变量显示为字符,而将字符常量(如'M'和'N')显示为数字。问题是,C++早期版本和C一样,也将字符常量存储为int类型,也就是说,'M'的编码77将被储存在一个16位或32位的单元中,而char变量一般占8位。下面的语句从常量'M'中复制8位(左边的8位)到变量ch中:

char cn='m';

遗憾的是,这意味着,对于cout来说,'M'和ch看上去有天壤之别,虽然他们存储的值相同。因此,下面的语句将打印$字符的ASCII码,而不是字符$:

cout <<'$';

但下面的语句将打印字符$:

cout.put('$');

在Release2.0之后,C++将字符常量存储为char类型,而不是int类型。这意味着cout现在可以正确处理字符常量了。

cin对象有几种不同的方式可以读取输入的字符。通过使用一个利用循环来读取几个字符的程序,读者可以更容易地领会到这一点。

 

——————————

我大概的总结了一下:

貌似是因为在之前版本的C++,比如说char a='b',其中a是字符变量,b是字符常量,显示的时候,用cout<<a ,输出的就是b,用cout<<'a',输出的就是a的ASCII值?还是B的ASCII值?只有用cout.put('b'),才会显示b,而不是b的ASCII值?

总之,貌似跟现在无关。

用cout.put();  如果里面是变量,则显示变量的ASCII值所代表的字符,如果是整数,则显示ASCII值为该整数所代表的字符。里面先计算整数,再将整数转为字符输出。

用cout.put('');  如果单引号里面是数字,则显示最后一位数字(小数也显示最后一位),如果单引号里面是字母,则显示字母。因为'a'是一个文本,所以直接显示这个文本,而不是转成ASCII值再输出字符。

 

代码如下:

#include <iostream>
using namespace std;

int main()
{
	char a;
	cin >> a;		//这里假定用户输入的是a。
	int b = a;
	cout << a << "   ←cout a"<<endl;					//输出是a
	cout << b << "   ←cout b" << endl;					//输出是97
	cout.put(a) << "   ←cout.put(a)" << endl	;		//输出是a
	cout.put(b) << "   ←cout.put(b)" << endl;			//输出是a
	cout.put(a + 1) << "   ←cout.put(a+1)" << endl;	//输出是b
	cout.put(b + 1) << "   ←cout.put(b+1)" << endl;	//输出是b
	cout.put(97) << "   ←cout.put(97)" << endl;		//输出是a
	cout.put('97') << "   ←cout.put('97')" << endl;	//输出是7
	cout.put('a') << "   ←cout.put('a')" << endl;		//输出是a
	cout.put('b') << "   ←cout.put('b')" << endl;		//输出是b
	cout << endl;
	system("pause");
	return 0;
}

输出;

a
a   ←cout a
97   ←cout b
a   ←cout.put(a)
a   ←cout.put(b)
b   ←cout.put(a+1)
b   ←cout.put(b+1)
a   ←cout.put(97)
7   ←cout.put('97')
a   ←cout.put('a')
b   ←cout.put('b')

请按任意键继续. . .

注意,因为我也不知道的原因,不能用char a[10]之类的来定义,可能是因为字符串的原因吧。同样,如果用char a[10],那么cout.put(a)就无法显示了。

 

我觉得,可能是因为cout.put()是面对单字符的。

时间: 2024-11-01 08:31:30

(三十一)cout.put()的相关文章

Windows 8风格应用开发入门 三十一 构建磁贴

磁贴是吸引用户经常使用应用重要手段之一.我们可将应用程序内较好的内容使用磁贴进行展示. 另外应用程序磁贴是应用程序中的核心部分,而且很可能也是用户最常见到的部分,因此利用 动态磁贴来吸引用户经常使用我们的应用程序! 开发入门 三十一 构建磁贴-磁贴风格"> 本篇博文主要介绍如何创建基本磁贴(也就是默认磁贴)以及如何使用本地通知更新磁贴. 一.创建基本磁贴 基本磁贴也可以叫做默认磁贴.通常我们点击基本磁贴来启动或者切换应用 . 我们可以在应用程序清单文件中设置默认的静态磁贴,并且该静态磁贴分

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十一)

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十一) 超酷万变的矢量魔法 还记得当年的经典网游奇迹(MU)吗?辉煌就如同其名字一般深刻烙印在我的脑海.与朋友们一起通宵奋战的日子已成过去,残留世上那一张张经典不朽的截图让我时刻感受回味.它的成功不仅仅因为其拥有一个极棒的世界观,更深层的却是那些超酷且绚丽的魔法效果,曾经打动着无数年轻的心. 本节我将以奇迹中So cool的"激光"魔法为蓝本,向大家展示如何制作矢量魔法: 不知道这张图是否能打捞起大

微信小程序把玩(三十一)wx.uploadFile(object), wx.downloadFile(object) API

原文:微信小程序把玩(三十一)wx.uploadFile(object), wx.downloadFile(object) API 反正我是没有测通这两个API!!!!不知道用的方式不对还是其他的!!!先记录下回头再说... 主要方法: wx.uploadFile(OBJECT)上传 wx.downloadFile(OBJECT)下载 wxml <button type="primary" bindtap="listenerButtonDownLoadFile"

JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件

JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI 一.GUI的概述 GUI全称叫做Graphical User Intergace(图形用户接口),用图形的方式,来显示计算机操作的界面,这样更加方便直观,与用户交互 说道交互,其实系统跟用户有两种交互,一种是GUI,一种叫做CLI,也就是命令行,全称叫做Command User Intergace

安徽方兴科技股份有限公司第三届董事会第三十一次会议决议公告

证券代码:600552 证券简称:方兴科技 公告编号:临2009-15 本公司董事会及全体董事保证本公告内容不存在任何虚假记载.误导性陈述或者重大遗漏,并对其内容的真实性.准确性和完整性承担个别及连带责任. 安徽方兴科技股份有限公司(以下简称"公司")第三届董事会第三十一次会议于2005年5月26日上午以通讯方式召开.本次会议应参加表决董事8人,实际参加表决董事8人.会议应参加表决董事超过半数,符合<公司法>.<公司章程>的有关规定,会议表决合法有效. 与会董事

ASP 3.0高级编程(三十一)

编程|高级 7.1.2 语义或"运行期"错误语法错误的发现和处理是令人烦恼的,但在编程中会遇到一些真正"令人兴奋"的另一类型的错误--语义错误(semantic error)或称"运行期"错误(runtime error).这类错误仅当运行一个脚本代码或其他程序时才会发现.换句话说完整有效的代码已经通过解释器或编译器的解释或编译,在执行时产生了错误.术语"运行期错误"通过是指语义错误的结果,也就是说这类错误存在于代码的语义中,

数据结构教程 第三十一课 动态查找表

教学目的: 掌握二叉排序树的实现方法 教学重点: 二叉排序树的实现 教学难点: 构造二叉排序树的方法 授课内容: 一.动态查找表的定义 动态查找表的特点是: 表结构本身是在查找过程中动态生成的,即对于给定值key,若表中存在其关键字等于key的记录,则查找成功返回,否则插入关键字等于key的记录.以政是动态查找表的定义: ADT DymanicSearchTable{ 数据对象D:D是具有相同特性的数据元素的集合.各个数据元素均含有类型相同,可唯一标识数据元素的关键字. 数据关系R:数据元素同属

Ruby on rails开发从头来(windows)(三十一)- Rails的目录结构

之前的三十篇都是根据书本上的内容写的,很少有自己的理解,从这篇开始,来了解一些Rails的内部机理,所以理解的东西比较多,代码就少了,这次我们来看看Rails的目录结构. 关于Rails的目录结构,通过前面的练习,我们应该有一些了解了,我们的工作目录主要是app和test两个.其他目录还了解不多,下面是一个Rails项目通常的目录结构,我们还用前面的depot项目来作例子,目前的depot项目的结构: ├─app │ ├─controllers │ ├─helpers │ ├─models │

Silverlight+WCF 新手实例 象棋 介绍四(三十一)

在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 另专题索引更已更新到三十:Silverlight+WCF 新手实例 象棋 专题索引 由于新增加了功能,所以,又要小小的介绍一下了 这节的介绍应该是非常简短了,因为新加的功能不多 1:首先,入场的是登陆,看小图,发现有点小变化了吧: 增加了单机入口,单机测试版本正式登陆!   2:用户对战增加默认[30分钟]计时.  红方开始计时开始:   黑方计时开始:   3:接下来进入到我们的单机版本了界面了: A:默认进入的界面