2012-07-16 42 views
-1

这是C++控制台片段。如何用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]'

如何可以解决这个问题应付(也许引用或指针是优选???)

谢谢

回答

1

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

if (calc_type == 'a') 
1

对字符文字使用单引号。

if (calc_type == "a") 

双引号这里马克意味着"a"是一个字符串,这意味着它具有的类型const char[2]{'a', '\0'})。 calc_typechar,所以类型不匹配。另一方面,'a'有一个字符类型,你可以比较好。

1

也许你的意思是:中

calc_type == 'a' 

代替

calc_type == "a" 

因为calc_typechar"a"const char*

+1

要挑剔,字符串文字不是指针。 – chris 2012-07-16 14:53:34

相关问题