rEg*_*icS 3 c++ integer character
如何将字符转换为整数值?例如,我一直试图将"A"视为1,将"B"视为2,依此类推.我尝试将字符与字母表中的每个字母进行比较并返回适当的值.
int intvalue(char letter)
{
if(letter == "A")
return 1;
else if(letter == "B")
return 2;
else if(letter == "C")
return 3;
else if(letter == "D")
return 4;
else if(letter == "E")
return 5;
else if(letter == "F")
return 6;
else if(letter == "G")
return 7;
else if(letter == "H")
return 8;
else if(letter == "I")
return 9;
else if(letter == "J")
return 10;
else if(letter == "K")
return 11;
else if(letter == "L")
return 12;
else if(letter == "M")
return 13;
else if(letter == "N")
return 14;
else if(letter == "O")
return 15;
else if(letter == "P")
return 16;
else if(letter == "Q")
return 17;
else if(letter == "R")
return 18;
else if(letter == "S")
return 19;
else if(letter == "T")
return 20;
else if(letter == "U")
return 21;
else if(letter == "V")
return 22;
else if(letter == "W")
return 23;
else if(letter == "X")
return 24;
else if(letter == "Y")
return 25;
else if(letter == "Z")
return 26;
Run Code Online (Sandbox Code Playgroud)
}
我得到了"错误:ISO C++禁止指针和整数之间的比较".有谁知道如何解决这一问题?或者甚至更好,一种不同的方式来解决这个问题?我觉得我的上述功能非常蛮力.
你需要使用字符文字,而不是字符串文字,例如,
if (letter == 'A')
^ note the single quotes
Run Code Online (Sandbox Code Playgroud)
也就是说,如果你愿意假设你在使用ASCII字符集的系统上运行,你可以简单地使用算术:
int charIndex = (letter - 'A') + 1;
Run Code Online (Sandbox Code Playgroud)
在ASCII字符集中,字母是连续的索引,因此这是有效的.这可能不适用于其他字符集.
在 C++ 中,achar 是一个数字。所以不需要像上面那样复杂的方法:你可以直接使用char。如果你想让它基于 A=1 如上所示,那么你可以这样做:
int intValue(char value)
{
return (value - 'A') + 1;
}
Run Code Online (Sandbox Code Playgroud)
As for the error you're getting, in C/C++, a double-quoted string is a char* (or, more accurately, a char[], but the difference isn't important here). That's why you're getting an error: you're trying to compare between a char and a char*.