大小写内的 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',
//..
};
我想使用我的程序中已经定义的字符串字符 在开关盒内。
为了清楚起见,我的定义如下所示
#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',
//..
};