C++中如何对字符串进行switch判断?

#include"stdafx.h"#include<iostream>#include<string>usingnamespacestd;intmain(intargc... #include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

int main(int argc,argv[])
{string a="abcd";
string b;
b=a.substr(0,1);
switch (b)
{
case "a":
cout<<"a!";
break;
case "b":
cout<<"b!";
break;
}
}
编译结果指着switch (b)这行出错,说switch expreation type of "std::string"
出错我看了下词霸说是 switch不能对string类型判断
不知道应该如何对字符串类型判断?
就是一个字符串"abcdefghi"
我需要判断开头3个,然后更具判断写不同的语句;
不知道该怎么写?难道要用if?(应为有很多个判断)
展开
 我来答
风若远去何人留
推荐于2017-09-09 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20403 获赞数:450164
专业C/C++软件开发

向TA提问 私信TA
展开全部

C++的开关语句,形式为

switch(expr1)
{
    case no1:
    break;
    case no2:
    break;
    ...
    case noN:
    break;
    default:
    break;
}

其功能是对expr1的值做判断,并执行与其相等的case分支,并一直执行到break或switch语句结束。

这里,no1, no2... noN必须是整型常量,而expr1也必须是一个类型为整型的表达式。

所以,直接对string类型做switch判断是非法的。但是可以根据实际情况,将运算结果转换为整型,从而使用switch语句。

举例来说,如果已知string类型的对象s,长度为5,其内容为"testN"形式,其中N可能为任意字符。这时要对该对象判断,就可以采用switch语句了。

switch(s[4])
{
    case '0':
    break;
    case 'A':
    break;
    ...
    
}
archmageee4
2015-10-23 · TA获得超过1517个赞
知道大有可为答主
回答量:1581
采纳率:78%
帮助的人:1035万
展开全部
语法上不支持.但我们可以变通.
比如把string 做一下hash处理,变成一个int数.
然后对这个int数进行switch.
这样子写的时候会复杂点.但是运行时快.比逐个字串比较要好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Fixend
推荐于2017-09-10 · TA获得超过1978个赞
知道小有建树答主
回答量:710
采纳率:0%
帮助的人:1109万
展开全部
C++不支持在case中用string

这种情况一般用
if ()
{
}
else if()
{
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式