一句话理解
大小写转换靠 ASCII 的固定差距 32。
为什么要学
题目经常忽略大小写,或要求统一成小写再处理。
讲解
‘a’ - ‘A’ 等于 32。大写转小写可以 c += 32,或 c - ‘A’ + ‘a’。
更可读的写法是 tolower / toupper,头文件 cctype。
先判断是不是字母,再转换。对数字字符加 32 会变成别的符号。
例子
char c = 'A';
c = c - 'A' + 'a';
cout << c;
输出:
a
先变成 0 号偏移,再加上小写的起点,得到 a。
常见错误
- 不对范围判断就 +32。
- string 里每个字符都要单独转,string 本身没有大小写类型。