【004】C++数据类型之字符类型(char)详解

【004】C++数据类型之字符类型(char)详解本文详细介绍了 C 中的字符类型 包括字符常量 字符变量和 ASCII 码的关系

引言


💡 作者简介:专注于C/C++高性能程序设计和开发,理论与代码实践结合,让世界没有难学的技术。包括C/C++、Linux、MySQL、Redis、TCP/IP、协程、网络编程等。
👉
🎖️ CSDN实力新星,社区专家博主
👉
🔔 专栏介绍:从零到c++精通的学习之路。内容包括C++基础编程、中级编程、高级编程;掌握各个知识点。
👉
🔔 专栏地址:C++从零开始到精通
👉
🔔 博客主页:【004】C++数据类型之字符类型(char)详解


🔔 上一篇:【003】C++数据类型之整型变量(int)详解
🔔 下一篇:【005】C++数据类型之实型(浮点数)、有符号数以及无符号数

一、背景知识

char类型是另一种整型。char类型是专门为存储字符而设计的。现在,存储数字对于计算机来说算不了什么,但存储字母则是另一种回事,编程语言通过使用字母的数值编码解决这个问题;因此,char类型是另一种整型。很多系统支持的字符不超过128个,因此可以使用一个字节就能表示所有符号。

虽然char常用来处理字符,但也可以将它用做比short更小的整型。

ASCII码表是一个标准字符编码系统,用来将数字、字母、符号和其他可打印和非打印字符转换成二进制代码。以下是ASCII码表的部分内容:

十进制 ASCII字符 二进制
0 NUL(空字符) 0000 0000
1 SOH(标题开始) 0000 0001
2 STX(正文开始) 0000 0010
3 ETX(正文结束) 0000 0011
4 EOT(传输结束) 0000 0100
5 ENQ(请求) 0000 0101
6 ACK(确认响应) 0000 0110
7 BEL(响铃) 0000 0111
8 BS(退格) 0000 1000
9 TAB(水平制表符) 0000 1001
10 LF(换行) 0000 1010
11 VT(垂直制表符) 0000 1011
12 FF(换页) 0000 1100
13 CR(回车) 0000 1101
14 SO(移位输出) 0000 1110
15 SI(移位输入) 0000 1111
16 DLE(数据链路转义) 0001 0000
17 DC1(设备控制1) 0001 0001
18 DC2(设备控制2) 0001 0010
19 DC3(设备控制3) 0001 0011
20 DC4(设备控制4) 0001 0100
21 NAK(否定响应) 0001 0101
22 SYN(同步空闲) 0001 0110
23 ETB(传输块结束) 0001 0111
24 CAN(取消) 0001 1000
25 EM(媒介结束) 0001 1001
26 SUB(替换) 0001 1010
27 ESC(转义) 0001 1011
28 FS(文件分隔符) 0001 1100
29 GS(组分隔符) 0001 1101
30 RS(记录分隔符) 0001 1110
31 US(单分隔符) 0001 1111
32 SPACE(空格) 0010 0000
33 ! 0010 0001
34 " 0010 0010
35 # 0010 0011
36 $ 0010 0100
37 % 0010 0101
38 & 0010 0110
39 0010 0111
40 ( 0010 1000
41 ) 0010 1001
42 * 0010 1010
43 + 0010 1011
44 , 0010 1100
45 - 0010 1101
46 . 0010 1110
47 / 0010 1111
48 0 0011 0000
49 1 0011 0001
50 2 0011 0010
51 3 0011 0011
52 4 0011 0100
53 5 0011 0101
54 6 0011 0110
55 7 0011 0111
56 8 0011 1000
57 9 0011 1001
58 : 0011 1010
59 ; 0011 1011
60 < 0011 1100
61 = 0011 1101
62 > 0011 1110
63 ? 0011 1111
64 @ 0100 0000
65 A 0100 0001
66 B 0100 0010
67 C 0100 0011
68 D 0100 0100
69 E 0100 0101
70 F 0100 0110
71 G 0100 0111
72 H 0100 1000
73 I 0100 1001
74 J 0100 1010
75 K 0100 1011
76 L 0100 1100
77 M 0100 1101
78 N 0100 1110
79 O 0100 1111
80 P 0101 0000
81 Q 0101 0001
82 R 0101 0010
83 S 0101 0011
84 T 0101 0100
85 U 0101 0101
86 V 0101 0110
87 W 0101 0111
88 X 0101 1000
89 Y 0101 1001
90 Z 0101 1010
91 [ 0101 1011
92 \ 0101 1100
93 ] 0101 1101
94 ^ 0101 1110
95 _ 0101 1111
96 ` 0110 0000
97 a 0110 0001
98 b 0110 0010
99 c 0110 0011
100 d 0110 0100
101 e 0110 0101
102 f 0110 0110
103 g 0110 0111
104 h 0110 1000
105 i 0110 1001
106 j 0110 1010
107 k 0110 1011
108 l 0110 1100
109 m 0110 1101
110 n 0110 1110
111 o 0110 1111
112 p 0111 0000
113 q 0111 0001
114 r 0111 0010
115 s 0111 0011
116 t 0111 0100
117 u 0111 0101
118 v 0111 0110
119 w 0111 0111
120 x 0111 1000
121 y 0111 1001
122 z 0111 1010
123 { 0111 1011
124 | 0111 1100
125 } 0111 1101
126 ~ 0111 1110
127 DEL(删除) 0111 1111

二、字符常量

C++中的字符常量用单引号括起来,表示一个字符。例如:

char c = 'a'; 

在单引号内可放任何一个字符,包括字母、数字、符号等。如果要表示某些特殊字符(如回车符、换行符等),可以使用转义字符来表示。例如:

char c1 = '\n'; // 换行符 char c2 = '\t'; // 制表符 char c3 = '\''; // 单引号 char c4 = '\"'; // 双引号 char c5 = '\\'; // 反斜杠 

还有一种特殊的字符常量是空字符(Null Character),用\0表示。它表示空字符,也就是字符串的结束标志符。例如:

char str[] = "hello world"; // 字符串常量 char c6 = '\0'; // 空字符 

输出字符和字符ASCII值的方式:

cout<<'a'<<endl;// 输出的是字符 cout<<(int)'a'<<endl;// 输出的是字符的ASCII值 97 

三、字符变量

C++中的字符变量是一种用来存储单个字符的数据类型,通常使用char关键字定义。每个字符常量被分配一个字节的内存空间,字符值以ASCII码的形式存放在变量的内存单中;它可以存储任何ASCII码字符,包括字母、数字、标点符号、空格等。

例如,下面是一个定义字符变量并赋值的示例:

char ch = 'A'; 

在这个示例中,定义了一个名为ch的字符变量,并将其初始化为小写字母A

除了单引号中的字符外,还可以通过其ASCII码值来初始化字符变量。例如:

char ch = 65; 

这将把字符变量ch的值设置为ASCII码为65的字符,即大写字母A。

ch变量中存放的是字符A的ASCII值65,即ch=65ch='A'在本质上是一致的。

字符变量的初始化:

char ch='\0'; 

注意 '\0'0和数值0的区别:

  • '\0'代表ASCII码中的空字符,也称为null字符或者零终止符号。它是一个字符类型,占用1个字节的空间。
  • 0是一个整数类型,表示十进制中的数字0。它占用4个字节的空间。
  • 数值0是一个整数类型,表示十进制中的数字0。它占用4个字节的空间。

它们之间的区别在于数据类型和存储空间大小。'\0'只是一个字符,而0和数值0则是整型数字,大小为4个字节。在某些情况下,'\0'可能被视为数值0,但是它们的数据类型不同,不能通用。

四、键盘(输入设备)给字符变量赋值

char ch='\0'; cout<<"请输入一个字符:"; cin>>ch; cout<<"ch = "<<ch<<endl; 

注意:

  • cin会判断ch的类型为char,一次只读一个字母
  • cin会跳过起始的空格和回车。
请输入一个字符: abcd ch=a 

五、字符常量和字符串常量的区别

  1. 表示方式不同:字符常量用单引号括起来,例如 ‘a’;而字符串常量用双引号括起来,例如 “hello world”。
  2. 数据类型不同:字符常量是一个字符,数据类型是 char;而字符串常量是一串字符数组,数据类型是 const char*
  3. 存储方式不同:字符常量存储在内存中的一个字符单中,字符串常量则是以 null 结尾的字符数组,存储在静态存储区域(即常量区)。
  4. 赋值方式不同:字符常量可以直接赋值给 char 类型的变量,例如 char a = 'a';而字符串常量需要使用 strcpy() 函数或者初始化语法赋值给 char* 类型的变量,例如 const char* str = "hello world"; 或者 char str[] = "hello world";
  5. 操作方式不同:对于字符常量,可以进行逻辑运算、比较操作等;而对于字符串常量,只能使用字符串函数库进行操作,例如 strlenstrcpystrcat 等。

在这里插入图片描述

六、案例:字符大小写转换

键盘输入一个字符,如果是大写就改成小写,如果是小写就改写成大写,其他字符不改变。

#include <iostream> using namespace std; int main() { 
    char ch='\0'; cout<<"请输入一个字符:"; cin>>ch; if(ch>='a' && ch<='z') ch=ch-('a'-'A'); else if(ch>='A' && ch<='Z') ch=ch+('a'-'A'); cout<<"ch = "<<ch<<endl; } 

示例中使用了一个规律,就是每个大小写直接的差值是一样的。

七、总结

  1. char类型表示单个字符,占用一个字节(8位),范围为-128~ 127或0~255(取决于是否使用有符号类型)。
  2. 可以使用单引号将字符括起来,例如:‘a’、‘B’、'1’等。
  3. 还可以使用转义字符表示一些特殊的字符,例如:'\n'表示换行符、'\t'表示制表符等。
  4. char类型变量可以被赋值为字符常量、字符变量和字符表达式等。
  5. 字符串是由多个字符组成的序列,可以用char数组或string类型表示。
  6. char类型也可以用于输入输出操作,例如:cin和cout等。
  7. C++中还提供了许多对char类型进行操作的函数,例如:strlen、strcat、strcpy等。
  8. 在ASCII编码中,每个字符都对应一个唯一的整数值,可以通过强制类型转换将字符转换为对应的整数值,例如:int('a')的结果为97。
  9. Unicode是一种字符集,它包含了世界上大部分的字符,可以通过wchar_t类型来表示。
    在这里插入图片描述
今天的文章 【004】C++数据类型之字符类型(char)详解分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-01-06 17:46
下一篇 2025-01-06 17:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/103261.html