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.为字符串样式开关生成分支表并不那么容易.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...