-1

这是 C++ 控制台片段。

我希望根据用户输入在几个函数中调用一个保存参数的函数。

例如:

#include<iostream>
using namespace std;

void Add (int x, int y)
    {
        cout << x + y << endl;
    }

void Subs (int x, int y)
    {
        cout << x - y << endl;
    }


int main(int argc, char* argv[])
{
    // Variable initialization
    char calc_type;
    int x;
    int y;

    // Console input
    cout << "Add or Substract (a or s)?" << endl;
    cin >> calc_type;
    cout << "1st number" << endl;
    cin >> x;
    cout << "2nd number" << endl;
    inc >> y;

    if (calc_type == "a")
    {
        Add(x, y);
    }
    else
    {
        Subs(x, y);
    }

return 0;

}

但是在写这篇文章时,我返回了如下错误消息:

错误 C2446:“==”:没有从“const char *”到“int”的转换

没有可以进行这种转换的上下文

错误 C2040:“==”:“int”与“const char [2]”的间接级别不同

我该如何解决这个问题(也许引用或指针是首选???)

谢谢

4

3 回答 3

2

calc_type是一个char变量。常数“a”是一个字符串。在 C 中,char 常量用单引号括起来,而不是用双引号括起来。所以改写为:

if (calc_type == 'a') 
于 2012-07-16T14:52:29.503 回答
1

对字符文字使用单引号。

if (calc_type == "a")

这里的双引号表示的"a"是字符串字面量,表示它的类型为const char[2]( {'a', '\0'})。calc_type是 a char,所以类型不匹配。'a', 另一方面,有一个字符类型,你可以很好地比较。

于 2012-07-16T14:51:17.770 回答
1

也许你的意思是:

calc_type == 'a'

代替

calc_type == "a"

因为calc_type是 achar并且"a"是 a const char*?

于 2012-07-16T14:51:41.210 回答