- C++
C++字符与ASCII码
- 2025-8-18 18:09:42 @
C++字符与ASCII码完全指南
一、字符类型基础
在C++中,字符是用于表示字母、数字和符号的基本数据类型,理解字符处理是编程的基础技能。
1.1 字符的定义与表示
字符在C++中用单引号'
包裹,例如:
- 字母:
'A'
、'b'
- 数字:
'0'
、'9'
- 符号:
'#'
、'+'
、'@'
// 字符变量的定义
char letter = 'A'; // 字母字符
char digit = '5'; // 数字字符
char symbol = '#'; // 符号字符
1.2 字符的输入与输出
使用cin和cout进行字符输入输出
#include <iostream>
using namespace std;
int main() {
char a; // 声明一个字符类型变量a
// 输入字符(cin会自动跳过空白字符)
cout << "请输入一个字符: ";
cin >> a;
// 输出字符
cout << "你输入的字符是: " << a << endl;
return 0;
}
注意:
cin >>
会跳过所有空白字符(空格、制表符、换行符等),只读取第一个非空白字符
处理空白字符的输入:getchar()
当需要读取空格、换行等空白字符时,应使用getchar()
函数:
#include <iostream>
using namespace std;
int main() {
char t;
// getchar()可以接收任意字符,包括空格和换行
cout << "请输入任意字符(包括空格): ";
t = getchar();
// 输出结果,展示我们确实接收到了空白字符
cout << "你输入的字符前后被aaa包围: aaa" << t << "aaa" << endl;
return 0;
}
cin与getchar()的对比
// 程序1:使用getchar()
#include <iostream>
using namespace std;
int main() {
char n;
n = getchar(); // 读取任意字符,包括空白符
cout << "1" << n << "1" << endl; // 会显示空白符
return 0;
}
// 程序2:使用cin
#include <iostream>
using namespace std;
int main() {
char n;
cin >> n; // 跳过空白符,读取第一个非空白字符
cout << "1" << n << "1" << endl; // 不会显示空白符
return 0;
}
二、ASCII码:字符的本质
计算机并不直接存储字符,而是存储字符对应的数字编码,最常用的就是ASCII(美国信息交换标准代码)编码。
2.1 查看字符的ASCII码
通过将字符强制转换为整数类型,可以查看其ASCII码:
#include <iostream>
using namespace std;
int main() {
char ch = 'A'; // 定义字符变量存储'A'
// 强制转换为int类型,输出对应的ASCII码
cout << "字符 '" << ch << "' 的ASCII码是: " << (int)ch << endl;
ch = 'a'; // 改为小写字母'a'
cout << "字符 '" << ch << "' 的ASCII码是: " << (int)ch << endl;
ch = '0'; // 注意是字符'0',不是数字0
cout << "字符 '" << ch << "' 的ASCII码是: " << (int)ch << endl;
ch = ' '; // 空格字符
cout << "空格字符的ASCII码是: " << (int)ch << endl;
return 0;
}
输出结果:
字符 'A' 的ASCII码是: 65
字符 'a' 的ASCII码是: 97
字符 '0' 的ASCII码是: 48
空格字符的ASCII码是: 32
2.2 从ASCII码获取字符
同样,我们可以将整数强制转换为字符类型,得到对应的字符:
#include <iostream>
using namespace std;
int main() {
int code = 65; // 存储ASCII码值
// 强制转换为char类型,得到对应的字符
cout << "ASCII码 " << code << " 对应的字符是: " << (char)code << endl;
code = 97; // 改为97
cout << "ASCII码 " << code << " 对应的字符是: " << (char)code << endl;
code = 48; // 改为48
cout << "ASCII码 " << code << " 对应的字符是: " << (char)code << endl;
code = 32; // 空格的ASCII码
cout << "ASCII码 " << code << " 对应的是空格: " << "[" << (char)code << "]" << endl;
return 0;
}
2.3 ASCII码表关键规律
掌握以下规律可以帮助你进行字符运算:
字符类别 | ASCII码范围 | 特点 |
---|---|---|
大写字母 | 65-90 | 'A'=65, 'B'=66, ..., 'Z'=90 |
小写字母 | 97-122 | 'a'=97, 'b'=98, ..., 'z'=122 |
数字字符 | 48-57 | '0'=48, '1'=49, ..., '9'=57 |
空格 | 32 | 唯一的空白字符编码 |
换行符 | 10 | 用\n 表示 |
重要规律:
- 小写字母比对应大写字母的ASCII码大32(如'a'-'A'=32)
- 字母和数字都是连续编码的(如'B'='A'+1,'2'='1'+1)
三、实用字符操作示例
3.1 大小写字母转换
利用大小写字母ASCII码相差32的特性,可以轻松实现转换:
#include <iostream>
using namespace std;
int main() {
// 大写转小写:加32
char upper = 'A';
char lower = upper + 32;
cout << upper << " 转成小写是:" << lower << endl;
// 小写转大写:减32
upper = 'b' - 32;
cout << 'b' << " 转成大写是:" << upper << endl;
// 通用转换函数示例
char ch = 'G';
cout << ch << " 转成小写是:" << (char)(ch + 32) << endl;
ch = 'm';
cout << ch << " 转成大写是:" << (char)(ch - 32) << endl;
return 0;
}
3.2 字符与数字的转换
数字字符(如'0')与实际整数(如0)的转换:
#include <iostream>
using namespace std;
int main() {
// 字符'0'-'9'转数字0-9:减去'0'的ASCII码(48)
char digit_char = '5';
int digit_num = digit_char - '0'; // 等价于 53 - 48 = 5
cout << "字符 '" << digit_char << "' 对应的数字是: " << digit_num << endl;
// 数字0-9转字符'0'-'9':加上'0'的ASCII码(48)
int num = 7;
char num_char = num + '0'; // 等价于7 + 48 = 55,对应字符'7'
cout << "数字 " << num << " 对应的字符是: '" << num_char << "'" << endl;
return 0;
}
3.3 遍历打印字符表
利用ASCII码的连续性,我们可以打印出一系列字符:
#include <iostream>
using namespace std;
int main() {
// 打印所有大写字母
cout << "大写字母:";
for(char c = 'A'; c <= 'Z'; c++) {
cout << c << " ";
}
cout << endl;
// 打印所有小写字母
cout << "小写字母:";
for(int i = 97; i <= 122; i++) { // 97是'a'的ASCII码,122是'z'的ASCII码
cout << (char)i << " ";
}
cout << endl;
// 打印所有数字字符
cout << "数字字符:";
for(char c = '0'; c <= '9'; c++) {
cout << c << " ";
}
cout << endl;
return 0;
}
四、总结
- C++中字符用单引号
'
表示,存储的是ASCII码值 - 输入字符时:
cin >>
跳过空白符,适合读取常规字符getchar()
读取任意字符,包括空白符
- 字符与ASCII码的转换通过强制类型转换实现:
(int)char_var
得到ASCII码(char)int_var
得到对应字符
- 掌握ASCII码规律可以实现:
- 大小写字母转换(加减32)
- 字符与数字的转换(加减'0')
- 字符范围的遍历
这些基础知识是C++字符处理的基础,掌握后可以解决各种字符相关的编程问题。
0 条评论
目前还没有评论...