有没有办法在C ++中按字母顺序递减字符值?
例如,更改包含的变量
'b'
到值'a'
或包含的变量
'd'
到值'c'
?
我试着查看字符序列但找不到任何有用的东西。
答案 0 :(得分:3)
字符本质上是一个字节整数(尽管编码器之间的表示可能不同)。虽然有许多编码将整数值映射到字符,但几乎所有编码都以连续的数字顺序将'a'
映射到'z'
个字符。因此,如果您想将字符串"aaab"
更改为"aaaa"
,您可以执行以下操作:
char letters [4] = {'a','a','a','b'};
letters[3]--;
答案 1 :(得分:0)
字母字符是ASCII字符表的一部分。 65是大写字母A,32位后面是97,是小写字母A.字母B到Z和b到z分别是66到90和98到122)原始的计算机程序员使它在32位分开ASCII图表而不是26(字母表中的字母),因为位操作可以轻松地从小写改为大写(反之亦然),以及忽略大小写(忽略32位 - 0010 0000)。 / p>
这样,例如,ASCII图表上的第84个字符(代表字母T)用位0101 0100表示。小写字母t是116,即0111 0100.忽略大小写时,32中的1位(右起第6个位置)被忽略。您可以看到所有其他位对于大写和小写完全相同。这使得每个人都更方便,更适合计算机。
要递减,只需将字符转换为ASCII字符值,递减1,然后取整数并将其转换回ASCII值。当你有一个' A'虽然(或' a'),因为这是一个特例。