【发布时间】:2018-09-05 09:54:14
【问题描述】:
我有一个任务,我必须编写一个程序,该程序允许人们输入一个七个字母的单词并将其转换为电话号码(例如 1-800-PAINTER 到 1-800-724-6837)。我正在尝试将每个字母转换为要输出给用户的特定数字,每个字母对应于电话键盘上的数字(因此a,A,b,B或c,C等于1,即更多信息:https://en.wikipedia.org/wiki/Telephone_keypad)。
目前我已将其设置为输入单词的每个字母分别代表一、二、三、四、五、六或七的 char 变量。然后,使用 switch 和 if 语句,想法是将 char 转换为 xtwo = 2、xthree = 3 等的 int 变量。但这不起作用。有没有更好的方法来做到这一点?
代码示例(直到第一次切换,尽管大多数情况下它是这样的重复模式):
int main()
{
char one, two, three, four, five, six, seven;
cout << "Enter seven letter word (1-800-***-****): " << "\n";
cin >> one >> two >> three >> four >> five >> six >> seven;
int xtwo = 2; int xthree = 3; int xfour = 4; int xfive = 5; int xsix = 6; int xseven = 7; int xeight = 8;
int xnine = 9;
switch (one)
{
case 1:
if (one == 'a' || one == 'b' || one == 'c' || one == 'A' || one == 'B' || one == 'C')
{
one = xtwo;
}
break;
case 2:
if (one == 'd' || one == 'e' || one == 'f' || one == 'D' || one == 'E' || one == 'F')
{
one = xthree;
}
break;
case 3:
if (one == 'g' || one == 'h' || one == 'l' || one == 'G' || one == 'H' || one == 'L')
{
one = xfour;
}
break;
case 4:
if (one == 'j' || one == 'k' || one == 'l' || one == 'J' || one == 'K' || one == 'L')
{
one = xfive;
}
break;
case 5:
if (one == 'm' || one == 'n' || one == 'o' || one == 'M' || one == 'N' || one == 'O')
{
one = xsix;
}
break;
case 6:
if (one == 'p' || one == 'q' || one == 'r' || one == 's' || one == 'P' || one == 'Q' || one == 'R' || one == 'S')
{
one = xseven;
}
break;
case 7:
if (one == 't' || one == 'u' || one == 'v' || one == 'T' || one == 'U' || one == 'V')
{
one = xeight;
}
break;
case 8:
if (one == 'w' || one == 'x' || one == 'y' || one == 'z' || one == 'W' || one == 'X' || one == 'Y' || one == 'Z')
{
one = xnine;
}
break;
}
那么,本质上,一个字母的char变量如何转化为具体的int变量呢?
【问题讨论】:
-
您可能想了解
std::tolower(或std::toupper)。 -
至于您当前的代码,您似乎对其中的逻辑有一种奇怪的想法。在
switch语句中使用变量one来检查它是否是1和8之间的整数值。然后检查one是否是带有特定字母的字符。但是one不能永远 等于1和例如'a'同时。
标签: c++ char type-conversion