以下还是不太明白,概念是抄的。
函数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()是面对单字符的。