C++ C++;将手机键盘号码翻译成字母表

C++ C++;将手机键盘号码翻译成字母表,c++,C++,简单地说,该程序要求用户输入一个非空数字序列,例如44477610223332145,最多17位,并将其输出为字母句子。翻译如下: 2是“A”,22是“B”,222是“C”,3是“D”等 保留0表示空格,1表示暂停,例如441444,以拆分44和444。 现在我的代码遇到了运行时错误,因为我真的是C++新手,我不知道这里发生了什么。请帮我查一下。谢谢 感谢您的评论,指出我没有包括错误消息,它说“向量下标超出范围” #包括 #包括 #包括 #包括 使用名称空间std; int main() { 字

简单地说,该程序要求用户输入一个非空数字序列,例如44477610223332145,最多17位,并将其输出为字母句子。翻译如下: 2是“A”,22是“B”,222是“C”,3是“D”等 保留0表示空格,1表示暂停,例如441444,以拆分44和444。 现在我的代码遇到了运行时错误,因为我真的是C++新手,我不知道这里发生了什么。请帮我查一下。谢谢

感谢您的评论,指出我没有包括错误消息,它说“向量下标超出范围”

#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
字符串n;
向量o;
int i,x(0);
地图字符;
{
字符[“2”]=“A”;
字符[“22”]=“B”;
字符[“222”]=“C”;
字符[“3”]=“D”;
字符[“33”]=“E”;
字符[“333”]=“F”;
字符[“4”]=“G”;
字符[“44”]=“H”;
字符[“444”]=“I”;
字符[“5”]=“J”;
字符[“55”]=“K”;
字符[“555”]=“L”;
字符[“6”]=“M”;
字符[“66”]=“N”;
字符[“666”]=“O”;
字符[“7”]=“P”;
字符[“77”]=“Q”;
字符[“777”]=“R”;
字符[“7777”]=“S”;
字符[“8”]=“T”;
字符[“88”]=“U”;
字符[“888”]=“V”;
字符[“9”]=“W”;
字符[“99”]=“X”;
字符[“999”]=“Y”;
字符[“9999”]=“Z”;
字符[“0”]=“”;
}
cout>n;
对于(i=0;i<17;i++)
{
如果(n.at(i)=n.at(i+1))
o[x]=n.at(i)+n.at(i+1);
其他的
x++;
o[x]=n.at(i);
}
对于(x=0;x
用于第17个元素,则不能执行
,因为之后没有元素,并且
n.at(17)
将抛出
std::超出范围

使用以下方法尝试此操作:

if(i<16&&n.at(i)==n.at(i+1))
n.at(i)==n.at(i+1)
将不会对
i==16进行评估

而且

程序要求用户输入一系列非空数字,例如44477610223332145最多17位


但是,即使
n
更短,您的循环也要迭代17次。

您也可以使用此方法

无效解码(字符arr) { 字符键盘[][5]={“0”、“1”、“ABC2”、“DEF3”、“GHI4”、“JKL5”、“MNO6”、“PQRS7”、“TUV8”、“WXYZ9”、“”、“#”}; char-ch,*str; 尺寸=1; int i,j=0

str = (char*)malloc(sizeof(char) * size);

for(i = 0; i < strlen(arr); i++)
{
    switch(arr[i])
    {
    case '0':
        ch = keypad[0][1];
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[0][0];
            i++;
        }
        break;
    case '1':
        ch = keypad[1][0];
        i++;
        break;
    case '2':
        ch = keypad[2][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[2][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[2][2];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[2][3];
            i++;
        }
        break;
    case '3':
        ch = keypad[3][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[3][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[3][2];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[3][3];
            i++;
        }
        break;
    case '4':
        ch = keypad[4][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[4][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[4][2];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[4][3];
            i++;
        }
        break;
    case '5':
        ch = keypad[5][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[5][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[5][2];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[5][3];
            i++;
        }
        break;
    case '6':
        ch = keypad[6][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[6][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[6][2];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[6][3];
            i++;
        }
        break;
    case '7':
        ch = keypad[7][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[7][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[7][2];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[7][3];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[7][4];
            i++;
        }
        break;
    case '8':
        ch = keypad[8][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[8][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[8][2];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[8][3];
            i++;
        }
        break;
    case '9':
        ch = keypad[9][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[9][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[9][2];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[9][3];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[9][4];
            i++;
        }
        break;
    case '.':

        continue;
    }

    *(str + j) = ch;
    str = (char*)realloc(str,size * sizeof(char));
    j++;
}

str[j] = '\0';

printf("%s",str);

free(str);
str=(char*)malloc(sizeof(char)*size);
对于(i=0;iif(i < 16 && n.at(i) == n.at(i + 1))
str = (char*)malloc(sizeof(char) * size);

for(i = 0; i < strlen(arr); i++)
{
    switch(arr[i])
    {
    case '0':
        ch = keypad[0][1];
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[0][0];
            i++;
        }
        break;
    case '1':
        ch = keypad[1][0];
        i++;
        break;
    case '2':
        ch = keypad[2][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[2][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[2][2];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[2][3];
            i++;
        }
        break;
    case '3':
        ch = keypad[3][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[3][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[3][2];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[3][3];
            i++;
        }
        break;
    case '4':
        ch = keypad[4][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[4][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[4][2];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[4][3];
            i++;
        }
        break;
    case '5':
        ch = keypad[5][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[5][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[5][2];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[5][3];
            i++;
        }
        break;
    case '6':
        ch = keypad[6][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[6][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[6][2];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[6][3];
            i++;
        }
        break;
    case '7':
        ch = keypad[7][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[7][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[7][2];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[7][3];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[7][4];
            i++;
        }
        break;
    case '8':
        ch = keypad[8][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[8][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[8][2];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[8][3];
            i++;
        }
        break;
    case '9':
        ch = keypad[9][0];
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[9][1];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[9][2];
            i++;
        }
        if(arr[i] == arr[i + 1])
        {
            ch = keypad[9][3];
            i++;
        }
        if (arr[i] == arr[i + 1])
        {
            ch = keypad[9][4];
            i++;
        }
        break;
    case '.':

        continue;
    }

    *(str + j) = ch;
    str = (char*)realloc(str,size * sizeof(char));
    j++;
}

str[j] = '\0';

printf("%s",str);

free(str);