c++ - 如何从字符中检索整数值?

标签 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;

我收到“错误:ISO C++ 禁止比较指针和整数”。有谁知道如何解决这一问题?或者更好的是,用不同的方法来解决这个问题?我觉得我的上述功能非常暴力。

最佳答案

您需要使用字 rune 字,而不是字符串文字,例如,

if (letter == 'A')
              ^ note the single quotes

也就是说,如果您愿意假设您正在使用 ASCII 字符集的系统上运行,则可以简单地使用算术:

int charIndex = (letter - 'A') + 1;

在 ASCII 字符集中,字母位于连续的索引处,因此可以正常工作。这可能不适用于其他字符集。

关于c++ - 如何从字符中检索整数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3089927/

相关文章:

arrays - 在 MATLAB 中将包含星号的字符数组转换为数字

php:将特殊字符插入myadmin数据库

c++ - 错误 : expected unqualified-id before 'while' |

c++ - winapi - SetLayeredWindowAttributes with LWA_COLORKEY 仅将像素设置为完全不透明或完全透明?

C++ 字符串 "insert"函数在多次运行时使应用程序崩溃

python - Python中C类型整数的最大值和最小值

c++ - 乘以负值的正整数

javascript - 在 JavaScript 中多次重复一个字符串

c++ - C++ 中的链表排序功能无法正常停止

java - 我可以在一个通用方法中实现整数的加法和字符串的连接吗?