0

如何将字符串输入作为 switch case 参数?我可以用一个int但不是字符串来做到这一点。

如果我使用输入,下面的代码将起作用int,但如果我更改为字符串,它将不起作用。

#include <iostream>
#include <sstream>
#include <string>
#include <math.h>
class MissionPlan //start of MissionPlan class
{
    public:
    MissionPlan();
    float computeCivIndex(string,int,int,float,float);
}; //end of MissionPlan class

LocationData::LocationData()
{
    switch(sunType)
    {
        case "Type A": //compute 
                      break;
        case "Type B": //compute
                       break;
         //and many more case..
        default: break;
    }
}
int main()
{

    for(;;)
    {
    MissionPlan plan;
    }
    return 0;
}
4

2 回答 2

3

抱歉,您不能在 C++ 中的字符串上使用 switch 语句。最好的办法是使用枚举。如果您不想使用枚举,那么您唯一的其他选择就是执行一堆 if else 来检查字符串是否相等。

于 2012-10-22T17:38:48.640 回答
0

C/C++ 不支持switch带字符串的语句。改用if-else-if

if (sunType.compare("Type A") == 0) {
     //compute
} else if (sunType.compare("Type B") == 0) {
     // compute
} else {
     // default
}
于 2012-10-22T17:39:19.870 回答