Converting lower & upper case ASCII characters
所以,我正在尝试做那个帖子中的内容,除非我想向后转换ascii转换(仅限字母),如果我给出数字1。
b+1 = a
B+1 = A (capital becomes capital)
c+2 = a
z+1 = y
a+1 = z
int lower_add = ((letter - 'a' - input_int) % 26) +'a';
if ((lower_add -'a' - input_int) < 0)
lower_add = lower_add +26;
这几乎得到了它,除了在某些情况下b + 1将转到其他一些非字母的ascii字符。
答案 0 :(得分:3)
lower_add
已减去input_int
,请勿再次执行此操作。将您的if
更改为:
if (lower_add < 'a')
lower_add += 26;
这仍然无法正确处理大写字母,您可能需要进行范围测试来决定是否减去'a'
或'A'
。
答案 1 :(得分:0)
我会做这样的事情:
#include <iostream>
#include <ctype.h>
class letter {
char current;
public:
letter(char x) : current(x) {}
letter &operator+=(int v) {
if (islower(current)) {
int pos = current - 'a' - v;
if (pos < 0) pos += 26;
current = pos + 'a';
}
else if (isupper(current)) {
int pos = current - 'A' - v;
if (pos < 0) pos += 26;
current = pos + 'A';
}
return *this;
}
friend std::ostream &operator<<(std::ostream &os, letter const &l) {
return os << l.current;
}
};
int main() {
letter a('c');
a += 3;
std::cout << a;
}