相关疑难解决方法(0)

为什么switch语句不能应用于字符串?

编译以下代码并得到错误type illegal.

int main()
{
    // Compilation error - switch expression of type illegal
    switch(std::string("raj"))
    {
    case"sda":
    }
}
Run Code Online (Sandbox Code Playgroud)

你不能在任何一个switch或中使用字符串case.为什么?是否有任何解决方案可以很好地支持类似于切换字符串的逻辑?

c++ string switch-statement

208
推荐指数
10
解决办法
33万
查看次数

在C++中使用HashMap的最佳方法是什么?

我知道STL有一个HashMap API,但我找不到任何好的和全面的文档,并提供了很好的例子.

任何好的例子将不胜感激.

c++ hashmap

149
推荐指数
4
解决办法
31万
查看次数

每个案例后都有C案例花括号

在C switch-case流控件中,需要在该块中定义if变量之后放置花括号{}case.

case无论变量声明如何,在每次之后放置大括号是不好的做法吗?

例如:

switch(i) {
  case 1: {
    int j = 4;
    ...code...
  } break;

  case 2: {  //No variable being declared! Brace OK?
    ...code...
  } break;
}
Run Code Online (Sandbox Code Playgroud)

c switch-statement

41
推荐指数
4
解决办法
4万
查看次数

为什么我不能在switch-case语句中有变量?

这是我的代码:

bool Character::keyPress(char c)
{
    switch(c)
    {
        case up_key:
            move(0, -1);
            break;

        case down_key:
            move(0, 1);
            break;

        case left_key:
            move(-1, 0);
            break;

        case right_key:
            move(1,0);
            break;

        default:
            return false;
    }

    return true;
}
Run Code Online (Sandbox Code Playgroud)

并且编译器抱怨:

error C2051: case expression not constant
error C2051: case expression not constant
error C2051: case expression not constant
error C2051: case expression not constant
Run Code Online (Sandbox Code Playgroud)

在我的头文件中,我有:

protected:
    char up_key;
    char down_key;
    char right_key;
    char left_key;
Run Code Online (Sandbox Code Playgroud)

我正在使用Visual C++ 2008.

c++ switch-statement

11
推荐指数
2
解决办法
3万
查看次数

标签 统计

c++ ×3

switch-statement ×3

c ×1

hashmap ×1

string ×1