C++字符

字符

C++不但可以处理数字类型的值,也可以处理字符。字符数据类型(char)代表一个单独的字符。一个字符被单引号括起来,如:

char lettter = 'A';

char number = '0';

要注意这里的0不再是数字类型(int,double,float,long),而是字符(char)类型。

这里还有一点要注意,之后讲到的字符串类型(string)使用""括起来的,所以"A"是字符串类型而不是字符类型。

ASCII码

众所周知,计算机只能识别0和1,那么计算机是如何识别字母,汉字或者其他语言呢。这里涉及到编码,即把一个字符映射为二进制数。而ASCII是比较原始的一种编码方式。常用的有数字('0'~'9',对应ASCII值48~57),大写字母('A'~'Z',对应ASCII值65~90),小写字母(''a~'z',对应ASCII值97~122)。详细的ASCII可以上网搜搜看,这里就不过多赘述了。

因为ASCII码只涉及到英文字母和一些英文符号,不能满足其他国家的需求,所以后来又出现了很多编码方式,如GBK,Unicode(万国码)等,其中又分为UTF-8, UTF-16等,汉字在UTF-8中常占3个字节,也有4个字节的。当然,这里主要介绍ASCII,额外的就不过多介绍了。

如何从键盘读入一个字符呢?见下面的代码:

cout << "Enter a character: " << endl;
char ch;
cin >> ch;
cout << "The character you entered is " << ch <<  endl;

转义序列

看下面一句代码

cout << "He said "I like C++"" << endl;

我们的本意是输出:He said "I like C++" ,但是程序以为我们的字符串只有: "He said " ,所以会报一个编译错误。想想也是理所应当的,否则的话就会有二义性了。

C++为了解决这一问题,使用了一种特殊符号——转义字符,来表示一下特殊符号。转义序列都是以一个反斜线打头,后面跟着一个字符。转义序列被看做一个整体,不可分割。详见下表:

 转义序列 名称 ASCII码
\b 回退符 8
\t 制表符 9
\n 换行符 10
\f 换页符 12
\r 回车符 13
\\ 反斜线 92
\" 双引号 34

所以,之前的语句可以表示为:

cout << "He sai \"I like C++\"" << endl;

数值与字符的转换:

//1. 隐式类型转换
int i = 'A';
cout << "i is " << i <<endl;
//显示结果:65
//因为A的ASCII码为65

char c = 65;
cout << "c is " << c << endl;
//显示结果:A
//因为ASCII码为65所对应的字符为A

//2. 显式类型转换
int j = 'A' + 2;
//j的值为67
cout << j << " is the ASCII code for character " << static_cast<char>(j) << endl;
//显示 结果:67 is the ASCII code for character C
//static_cast<char>(value)的<>中的是要转换为的类型

字符之间的比较(实际上比较的是他们的ASCII码)

'a' < 'b' 返回true,因为a的ASCII码是97,b的ASCII码是98

'a' < 'A' 返回false,因为a的ASCII码是97,A的ASCII码是65

字符函数

函数 描述
isdigit(ch) 如果ch是数字,返回true
isalpha(ch) 如果ch是字母,返回true
isalnum(ch) 如果ch是数字或字母,返回true
islower(ch) 如果ch是小写字母,返回true
isupper(ch) 如果ch是大写字母,返回true
isspace(ch) 如果ch是空白字符,返回true
tolower(ch) 返回ch的小写形式
toupper(ch) 返回ch的大写形式
posted @ 2020-03-30 11:19  川尘  阅读(2563)  评论(0编辑  收藏  举报
`