快速协助涉及char和if语句

时间:2014-11-17 21:48:20

标签: c++

对不起,如果这真是微不足道的话,我只是因为被困在第一步而感到厌倦而需要继续,而我在其他任何地方都没有任何帮助。我不能为我的生活得到这个功能与我合作。这是来源:

 #include <iostream>
 using namespace std;

 void ReadDials(){
 };

void ToDigit(char *x){
    if (*x = 'a'){*x = '54';}
    else if (*x = 'A'){*x = 2;}
    else if (*x = 'b'){*x = 3;}
    else(*x = 4);
};

int main()
{
    char one;
    char two;
    char three;

    cin >> one; 
    ToDigit(&one);

    cout << "one is: " << one <<  endl;

    system("PAUSE");
}

我尝试过:在实际数字2和2的ascii指针之间交替,我相信是&#39; 32&#39;我已经使用==来尝试,我已经做了我能想到的一切,我知道我已经在思考了。重点是让该功能将用户输入转换为电话拨号器的号码。

问题的范围从不与if语句同步的数字,以及看到&#39;:D&#39;面对控制台。这让我非常生气。

如果我需要让自己更清楚,我也会非常高兴。

提前感谢您的任何帮助。

1 个答案:

答案 0 :(得分:2)

if (*x = 'a')中,=是一项任务。您需要==进行比较。此外,&#39; 54&#39;不是一个字符值。

void ToDigit(char *x){
    if (*x == 'a') { *x = '54'; }  /* what is this supposed to do? */
    else if (*x == 'A') {*x = 2; }
    else if (*x == 'b') {*x = 3; }
    else { *x = 4 };
};

看起来您正在尝试使用x作为输入和输出。让我们退后一分钟。让我们编写一个函数,它只需要一个char返回一个整数。这将是获取char并从中获取数字的规范方式。

int ToDigit(char x){
    if (x == 'a') { return 54; }
    if (x == 'A') { return 2; }
    if (x == 'b') { return 3; }
      return 4 ;
};

要使用此功能形式,您可以在这种情况下将返回值分配给int类型的变量。

char my_input;
int mapped_number;
std::cin >> my_input;
mapped_number = ToDigit(my_input);
std::cout << my_input << " maps to " << mapped_number << ".\n";