[英]How to convert char into int in a function?
poziomy= char; poziomy=字符; pionowy= digit;
pionowy=数字; ( no problems with this one)
(这个没问题)
So I need to convert char into a digit in function but obviusly I cannot do char=int, so I dont know how to pass on the converted char into digit properly.所以我需要在 function 中将 char 转换为数字,但显然我不能做 char=int,所以我不知道如何正确地将转换后的 char 传递为数字。
I guees i can do two functions but maybe there is an easier way?我猜我可以做两个功能,但也许有更简单的方法?
I thought of making a new variable poziomy_c
but I dont know how to pass it to Ruch_gracza()
我想制作一个新变量
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;
}
You can use char arithmetic to make this a whole lot easier.您可以使用 char 算法使这变得更容易。 Since 'A' to 'Z' will be contiguous in ASCII/Unicode, you can do
literka - 'A'
to get how far literka
is from A
(which is what your switch is doing):由于 'A' 到 'Z' 在 ASCII/Unicode 中是连续的,因此您可以执行
literka - 'A'
来获取literka
与A
的距离(这是您的开关正在执行的操作):
int Convert_letter (char literka) {
if(!std::isalpha(literka)) { return literka; } // Not a letter
return std::toupper(literka) - 'A';
}
Or if you want a more robust solution to cover even less common character encodings:或者,如果您想要一个更强大的解决方案来涵盖更不常见的字符编码:
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
will look similar (except with std::isdigit
instead of std::isalpha
). Convert_digit
看起来很相似(除了std::isdigit
而不是std::isalpha
)。
You can do as你可以这样做
char c = 'B';
int digit = c - 'A';
return digit;
You need some knowledge about the ASCII table and data type in C++.您需要一些关于 C++ 中的ASCII 表和数据类型的知识。 Simply, a char is an integer from -128... 127. If you declare a char variable name ch like this:
简单地说,一个 char 是一个 integer 从 -128... 127。如果你声明一个 char 变量名ch像这样:
char ch = 'B';
C++ will understand that ch = 66 (look at ASCII table). C++ 会理解ch = 66 (查看 ASCII 表)。 So that we can do arithmetic operator with ch like an integer variable.
这样我们就可以像 integer 变量一样使用ch进行算术运算符。
ch - 'A'; // result 1, because 'A' = 65
ch - 65; // same result with ch - 'A'
Finally, you can write your function like this:最后,您可以像这样编写您的 function:
int functionChar2Int(char x){
return x - 'A';
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.