程序疑问

来源:百度知道 编辑:UC知道 时间:2024/06/03 09:34:07
#include<iostream>
#include<string>
void main()
{using namespace std;
string name;
cin>>name;
switch(name)
{
case "li":cout<<"123"<<endl;
case "xiu":cout<<"234"<<endl;
default:cout<<"0000"<<endl;
}

}编译是报的错怎么看不懂

我认为switch()语句括号里面的要用基本的数据类型,字符型,整型,实型,bool型,别的应该都不行。例如字符串型的,系统不会比较他们是否相等(他不知道该去调用strcmp()函数,当然也不知道去调用string类的==运算符),所以说他不知道去匹配哪个case语句;

switch用的不对,case后面要跟的是一个常量表达式,但name和常量表达式值相等时执行case后面的语句,但是你的常量表达式用字符串就不对了。还有你不加break回出现如name为"li"时所有输出语句都执行的情况,不知道你是否真的是这个目的

case xx:里面的这个
xx必须是个常量, 也就是在编译期必须确定的值
否则的话只能用if..else
一个容易的方法, 使用enum, 外加string和enum对应(这是一个映射),

什么错,贴出来