【问题标题】:C++ typecast constant string within case案例中的 C++ 类型转换常量字符串
【发布时间】:2015-04-17 07:11:03
【问题描述】:
我想使用我程序中已经定义的字符串字符
在开关盒内。
澄清一下,我的定义是这样的
#define COMMAND "c"
在不同的部分,我想在案例陈述中使用这个符号。
switch ( sign )
{
case COMMAND:
break;
....
}
我知道这是不允许的,但是有什么方法可以将它转换为一个字符(无论如何它只是一个字符)?我面临的问题是,编译器因此抱怨
它不再是恒定的......
谢谢!
【问题讨论】:
标签:
c++
string
casting
case
【解决方案1】:
你为什么不把它定义为你想要的?像这样
#define COMMAND 'c'
但是等等……应该尽可能避免使用宏,你以前没听说过吗?所以也不要那样做。改为这样做:
constexpr char command = 'c';
或者如果你有多个命令,那么枚举可能会更好:
enum class command_type : char
{
command0 = 'c',
command1 = 'd',
command2 = 'e',
//..
};