前端之家收集整理的这篇文章主要介绍了
c – 为什么switch语句不能应用于字符串?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
编译以下
代码并得到类型非法的
错误.
int main()
{
// Compilation error - switch expression of type illegal
switch(std::string("raj"))
{
case"sda":
}
}
您不能在开关或大小写中使用字符串.为什么?是否有任何解决方案可以很好地支持类似于切换字符串的逻辑?
之所以与类型系统有关. C/C++并不真正
支持字符串作为一种类型.它确实
支持常量char数组的想法,但它并不完全理解字符串的概念.
为了生成switch语句的代码,编译器必须理解两个值相等的含义.对于像int和enums这样的项目,这是一个微不足道的比较.但是编译器应该如何比较2个字符串值呢?区分大小写,不敏感,文化意识等…如果没有完全意识到字符串,则无法准确回答.
另外,C/C++ switch语句通常生成为branch tables.为字符串样式开关生成分支表并不那么容易.
原文链接:https://www.f2er.com/c/118358.html