例如,我想做类似以下的事情:
char output = 'A' + 1;
获得'B'的输出
然而,只是尝试上面的内容就会出现投射错误。
答案 0 :(得分:14)
是的,+
未定义二进制char
运算符,因此您最终会隐式转换为int
。您可以使用前/后增量运算符:
char x = 'A';
x++;
...因为为++
定义了char
运算符 。
但除此之外,你需要演员:
char x = 'A';
x = (char) (x + 1);
答案 1 :(得分:5)
您需要自己投射操作,如此
QDate date = QDate::fromString("1MM12car2003", "d'MM'MMcaryyyy");
// date is 1 December 2003
答案 2 :(得分:2)
正如其他人所说,是的,这绝对是可能的。其他答案给出了例子,所以我不会重复它们。但是,我想在此提出警告:如果你所做的只是"盲目地"在角色中添加一个数字,可能会得到意想不到的结果。例如,Z + 1 =' ['。如果那是你期望的结果,那就太好了 - 否则你必须处理它。还有可能添加到字符将导致不可打印的字符(例如〜+ 1 =' DEL',这是不可打印的,并且' DEL' ; + 1不是" t"标准" ASCII了。
您必须考虑以下情况:在Z,Z或9中添加1的结果是什么?你能得到非字母输入或输出 - 例如将{+ 1(结果:' |')有效?那么Z + 1 =' ['?你在ASCII 127(最后一个有效的ASCII字符)做什么?那些不可打印的角色呢?
例如,如果您希望输入只是字母和数字,并且您希望结果能够包含"环绕"在有效范围的末尾(例如Z + 1 = A,z + 1 = a,9 + 1 = 0),您可以执行以下操作:
char bChar = 'A'; // Or whatever you want, obviously
switch (bChar)
{
case 'z':
bChar = 'a';
break;
case 'Z':
bChar = 'A';
break;
case '9':
bChar = '0';
break;
default:
bChar++;
break;
}
最重要的是要决定这些"边缘情况会发生什么?#34;并确保妥善处理它们。
答案 3 :(得分:0)
尝试:
int ASCIINumber = (int)'A'; //101 A
char charResult = Convert.ToChar(ASCIINumber + 1); //102 or B