大小写互换
约 8 分钟
同一个字母,小写的 ASCII 编号比大写大 32(因为 'a' - 'A' == 32)。所以大写加 32 变小写,小写减 32 变大写。写成 c + ('a' - 'A') 比硬记 32 更不容易错。
char c = 'a';
char up = c - 32; // 'A',小写转大写
char lo = 'B' + 32; // 'b',大写转小写
// 安全写法:先判断再转
if (c >= 'A' && c <= 'Z') c = c + ('a' - 'A'); // 是大写才转小写
标准库还有现成的 tolower / toupper(在 <cctype> 里)更省心,但它们返回 int,赋回 char 时留意类型。
对单个字符是 ,整串就是 。最大的坑是"不加判断就转换":只有确认这个字符是字母时才做加减,否则把标点、数字也偏移 32,会得到乱七八糟的字符。所以转换前先判断范围——要转小写就先确认它在 'A'~`'Z'` 之间,是大写才减。
小纸条
'a' 减 32 是什么字符?
登录 后可看答案