0

编译代码时出现错误。

错误输出:

main.cpp:35:16:错误:开关量不是整数

我不知道为什么。代码如下:

int Values(string letter) {
    switch( tolower(letter) ) {
        case 'a' : a.setTotal();
        break;

问候

4

4 回答 4

4

Astring不是 a char,它是一个表示字符数组的对象。您应该传入 a ,而不是将 a 传递string给该函数char

tolower(int)存在于 C++ 中,它旨在接受字符,而不是字符串。


这是解决此问题的另一种方法,它需要对代码进行较少的更改:

由于我很确定从名称来看这letter将是一个string长度1,您可以将您的switch语句更改为 access letter[0],这将是string. 您还必须传递letter[0]tolower.

于 2013-03-28T19:51:07.577 回答
2

letter是字符串,所以tolower(letter)产生一个字符串。但是您的情况是字符('a')。此外,在 C/C++ 中不可能将 switch 用于字符串。改用这一行:

switch( tolower(letter.data[0]) )
于 2013-03-28T19:54:31.063 回答
0

switch inscrutvion 只接受枚举类型(enum)、chars(char)或整数(int、unsigned、long)

于 2013-03-28T19:59:23.693 回答
0

看起来您想使用单个字符。

更改函数的参数:

int Values(string letter)

对此:

int Values(char letter)

switch声明将起作用。

于 2013-03-28T20:01:25.853 回答