如何在函数中将char转换为int?

0 c++

poziomy = 字符;pionowy=数字;(这个没有问题)

所以我需要在函数中将 char 转换为数字,但显然我不能做 char=int,所以我不知道如何正确地将转换后的 char 转换为数字。

我想我可以做两个功能,但也许有更简单的方法?

我想创建一个新变量,poziomy_c但我不知道如何将其传递给Ruch_gracza()

int Convert_digit (int cyfra)
{
    switch (cyfra)
    {
        case 10: return 0;break;
        case 9: return 1;break;
        case 8: return 2;break;
        case 7: return 3;break;
        case 6: return 4;break;
        case 5: return 5;break;
        case 4: return 6;break;
        case 3: return 7;break;
        case 2: return 8;break;
        case 1: return 9;break;
    }
}

int Convert_letter (char literka)
{
   switch (literka)
   {
       case 'A': return 0; break;
       case 'B': return 1; break;
       case 'C': return 2; break;
       case 'D': return 3; break;
       case 'E': return 4; break;
       case 'F': return 5; break;
       case 'G': return 6; break;
       case 'H': return 7; break;
       case 'I': return 8; break;
       case 'J': return 9; break;
   }
}

void Conwert(int &pionowy, char poziomy)
{
     pionowy=Convert_digit(pionowy);

     int poziomy_c;
     poziomy_c=Convert_letter (poziomy);
}

void Ruch_gracza1 (int plansza[10][10])
{
    int pionowy ;
    char poziomy;
    cout << "wprowadz wspolrzedne pola na ktorym lezy pion który chcesz ruszyc ( w pionie , potem w poziomie)" << endl;
    cin >> pionowy >> poziomy;
    Conwert (pionowy,poziomy);
    cout << pionowy << endl;
    cout << poziomy << endl;
}
Run Code Online (Sandbox Code Playgroud)

sco*_*001 5

您可以使用 char 算术使这一切变得更容易。由于“A”到“Z”将在ASCII / Unicode的连续的,你可以做literka - 'A'得到多远literkaA(这是你的交换机做):

int Convert_letter (char literka) {
    if(!std::isalpha(literka)) { return literka; } // Not a letter
    return std::toupper(literka) - 'A';
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要一个更强大的解决方案来涵盖更不常见的字符编码:

int Convert_letter (char literka) {
    if(!std::isalpha(literka)) { return literka; } // Not a letter
    std::string alphabet = "abcdefghijklmnopqrstuvwxyz";
    return std::distance(std::begin(alphabet), std::find(std::begin(alphabet), std::end(alphabet), literka));;
}
Run Code Online (Sandbox Code Playgroud)

Convert_digit看起来很相似(除了用std::isdigit而不是std::isalpha)。