簡體   English   中英

如何在 function 中將 char 轉換為 int?

[英]How to convert char into int in a function?

poziomy=字符; pionowy=數字; (這個沒問題)

所以我需要在 function 中將 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;
}

您可以使用 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';
}

或者,如果您想要一個更強大的解決方案來涵蓋更不常見的字符編碼:

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));;
}

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

你可以這樣做

char c = 'B';

int digit = c - 'A';
 
return digit;

您需要一些關於 C++ 中的ASCII 表和數據類型的知識。 簡單地說,一個 char 是一個 integer 從 -128... 127。如果你聲明一個 char 變量名ch像這樣:

char ch = 'B';

C++ 會理解ch = 66 (查看 ASCII 表)。 這樣我們就可以像 integer 變量一樣使用ch進行算術運算符。

ch - 'A'; // result 1, because 'A' = 65
ch - 65;  // same result with ch - 'A'

最后,您可以像這樣編寫您的 function:

int functionChar2Int(char x){
  return x - 'A';
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM