C++ 电话拨号程序,将字母转换成卡片套装而不是数字

C++ 电话拨号程序,将字母转换成卡片套装而不是数字,c++,switch-statement,C++,Switch Statement,我正在尝试创建一个程序,在这个程序中,用户可以使用字母或数字输入电话号码,如果他们使用字母,它应该将它们转换为电话键盘上相应的号码。然而,当字母被转换时,它们不是变成数字,而是变成卡片上的符号,像梅花、红桃和黑桃。不知道为什么会这样。下面是应该进行转换的函数: #include <iostream> #include <cctype> using namespace std; int read_dials(char &digit1, char &digi

我正在尝试创建一个程序,在这个程序中,用户可以使用字母或数字输入电话号码,如果他们使用字母,它应该将它们转换为电话键盘上相应的号码。然而,当字母被转换时,它们不是变成数字,而是变成卡片上的符号,像梅花、红桃和黑桃。不知道为什么会这样。下面是应该进行转换的函数:

#include <iostream>
#include <cctype>
using namespace std;

int read_dials(char &digit1, char &digit2, char &digit3, char &digit4, char &digit5, char &digit6, char &digit7, char &digit8);
int todigit(char &digit);
void acknowledge_call(char digit1, char digit2, char digit3, char digit4, char digit5, char digit6, char digit7, char digit8);


int todigit(char &digit)
{
    int errorCode = 0;

    switch (digit)
    {
        case 1:
            break;
        case 2:
        case 'A':
        case 'B':
        case 'C':
        case 'a':
        case 'b':
        case 'c':
            digit = 2;
            break;
        case 3:
        case 'D':
        case 'E':
        case 'F':
        case 'd':
        case 'e':
        case 'f':
            digit = 3;
            break;
        case 4:
        case 'G':
        case 'H':
        case 'I':
        case 'g':
        case 'h':
        case 'i':
            digit = 4;
            break;
        case 5:
        case 'J':
        case 'K':
        case 'L':
        case 'j':
        case 'k':
        case 'l':
            digit = 5;
            break;
        case 6:
        case 'M':
        case 'N':
        case 'O':
        case 'm':
        case 'n':
        case 'o':
            digit = 6;
            break;
        case 7:
        case 'P':
        case 'Q':
        case 'R':
        case 'S':
        case 'p':
        case 'q':
        case 'r':
        case 's':
            digit = 7;
            break;
        case 8:
        case 'T':
        case 'U':
        case 'V':
        case 't':
        case 'u':
        case 'v':
            digit = 8;
            break;
        case 9:
        case 'W':
        case 'X':
        case 'Y':
        case 'Z':
        case 'w':
        case 'x':
        case 'y':
        case 'z':
            digit = 9;
            break;
    }
    // nice size switch statemwent

    return errorCode;
}
#包括
#包括
使用名称空间std;
int read_dials(字符和数字1、字符和数字2、字符和数字3、字符和数字4、字符和数字5、字符和数字6、字符和数字7、字符和数字8);
整数到数字(字符和数字);
无效确认调用(char digit1、char digit2、char digit3、char digit4、char digit5、char digit6、char digit7、char digit8);
整数到数字(字符和数字)
{
int errorCode=0;
开关(数字)
{
案例1:
打破
案例2:
案例“A”:
案例“B”:
案例“C”:
案例“a”:
案例“b”:
案例“c”:
数字=2;
打破
案例3:
案例“D”:
案例“E”:
案例“F”:
案例“d”:
案例“e”:
案例“f”:
数字=3;
打破
案例4:
案例“G”:
案例“H”:
案例“I”:
案例“g”:
案例“h”:
案例“i”:
数字=4;
打破
案例5:
案例“J”:
案例“K”:
案例“L”:
案例“j”:
案例“k”:
案例“l”:
数字=5;
打破
案例6:
案例“M”:
案例“N”:
案例“O”:
案例“m”:
案例“n”:
案例“o”:
数字=6;
打破
案例7:
案例“P”:
案例‘Q’:
案例“R”:
案例S:
案例“p”:
案例‘q’:
案例“r”:
案例s:
数字=7;
打破
案例8:
案例“T”:
案例“U”:
案例“V”:
案例“t”:
案例“u”:
案例“v”:
数字=8;
打破
案例9:
案例“W”:
案例“X”:
案例“Y”:
案例“Z”:
案例“w”:
案例“x”:
案例“y”:
案例“z”:
数字=9;
打破
}
//漂亮的开关状态
返回错误码;
}
以下是打印电话号码的功能:

void acknowledge_call(char digit1, char digit2, char digit3, char digit4, char digit5, char digit6, char digit7, char digit8)
{
    cout << "Phone Number Dialed: " << digit1 << digit2 << digit3 << digit4 << digit5 << digit6 << digit7 << digit8;
}
void确认_调用(char-digit1、char-digit2、char-digit3、char-digit4、char-digit5、char-digit6、char-digit7、char-digit8)
{

cout不使用字符数据类型,只需将数字分配给整数变量,或将48+数字分配给字符值,该字符值分配ASCII值48+1=49,即字符“1”

当你写作时

char ch = 'A';
您正在将ch的值设置为编译器用来表示字符“A”的数字。这通常是“A”的ASCII码,即65

与任何数字类型一样,您可以使用普通数字对其进行初始化,从而得到相同的结果:

char ch = 65;
在您的例子中,您正试图为char变量分配值2,3,…9,这些值依次显示在不同输出流上可能显示不同的相对ASCII值

有关ASCII码的更多信息,请参阅以下链接:

不使用字符数据类型,只需将数字分配给整数变量,或将48+数字分配给字符值,该字符值分配ASCII值48+1=49,即字符“1”

当你写作时

char ch = 'A';
您正在将ch的值设置为编译器用来表示字符“A”的数字。这通常是“A”的ASCII码,即65

与任何数字类型一样,您可以使用普通数字对其进行初始化,从而得到相同的结果:

char ch = 65;
在您的例子中,您正试图为char变量分配值2,3,…9,这些值依次显示在不同输出流上可能显示不同的相对ASCII值

有关ASCII码的更多信息,请参阅以下链接:

我解决了这个问题,在我要转换的数字的两边都加上了单撇号

例如:

digit = '2'; 
而不是

digit = 2;

我解决了这个问题,在我要转换的数字的两边都加上了单撇号

例如:

digit = '2'; 
而不是

digit = 2;

如何打印数字?打印数字通常不会生成卡片套装,因此您必须以不寻常的方式打印。编辑帖子以显示我用于打印的功能。您如何打印数字?打印数字通常不会生成卡片套装,因此您必须以不寻常的方式打印。编辑显示我用来打印的函数的帖子。