大小写内的 C++ 类型转换常量字符串

C++ typecast constant string within case

我想使用我的程序中已经定义的字符串字符 在开关盒内。

为了清楚起见,我的定义如下所示

#define COMMAND "c"

在不同的部分,我想在 case 语句中使用这个符号。

switch ( sign )
{
  case COMMAND:
  break;
  ....
}

我知道这是不允许的,但是有什么方法可以将它转换为一个字符(无论如何它只是一个字符)?我面临的问题是,编译器随后抱怨说 它不再是常数...

谢谢!

你为什么不把它定义成你想要的呢?像这样

#define COMMAND 'c'

但是等等...应该尽可能避免使用宏,您以前没听说过吗?所以也不要那样做。改为这样做:

 constexpr char command = 'c';

或者如果你有多个命令,那么枚举可能会更好:

 enum class command_type : char
 {
    command0 = 'c',
    command1 = 'd',
    command2 = 'e',
    //..
 };