编译以下代码会出现错误消息:type illegal
.
int main()
{
// Compilation error - switch expression of type illegal
switch(std::string("raj"))
{
case"sda":
}
}
您不能在其中使用字符串switch
or case
。为什么?是否有任何解决方案可以很好地支持类似于打开字符串的逻辑?
原因与类型系统有关。 C/C++ 并不真正支持字符串作为一种类型。它确实支持常量字符数组的想法,但它并没有真正完全理解字符串的概念。
为了生成 switch 语句的代码,编译器必须理解两个值相等的含义。对于像整数和枚举这样的项目,这是一个简单的位比较。但是编译器应该如何比较两个字符串值呢?区分大小写、不敏感、文化意识等等......如果没有充分了解字符串,就无法准确回答。
此外,C/C++ switch 语句通常生成为分支表。为字符串样式开关生成分支表并不那么容易。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)