将字符转换为整数

Convert char to int?

本文关键字:整数 转换 字符      更新时间:2023-10-16

我正在制作一个战舰游戏,所以当我将"A10"之类的东西传递到坐标函数中时,它需要将列变成字母,将行变成数字。

Coordinate(std::string coord = "A10")
    {
        char c = coord[0];
        col = c - 16;
        int r = atoi((coord.substr(1,2)).c_str());
        row = r-1;
    };

因此,在此示例中,传递 A10 应使 col = 0 (A=0,B=1,C=2) 和行 = 9。

等于 9 的行似乎有效,但等于 0 的列不起作用。

获取 A 的整数应该是col = c - 'A'

您是否正在尝试将"A"的值映射到零? 请记住,字符是单字节整数,

char c = std::toupper( coord[0] );
if( c >= 'A' && c <= 'Z' )
{
    col = c - 'A';
}
else
{
    // TODO: Invalid/error?
}

你所说的字符"A"只是数字65(其ASCII值)的一个有趣的名称。根据此 ASCII 表,"B" = 66,"C" = 67,依此类推。所以你应该做的是计算int column = static_cast<int>(coord[0] - 'A')

A (0x41)

十进制值是 65 ,所以你目前的数学会得到 49。 col = c - 65应该给你所需的行为。