繁体   English   中英

在C ++中用字符串切换大小写

[英]switch case with string in c++

我想用字符串写一个开关盒。 我用了枚举,我这样写:

  string enum { next = 0, prev = 1, ext = 2 }order; 
  while(true)
  {
      cin >> order;
      switch(order)
      {
        case 0:
            //do order0
            break;
        case 1 :
            //do order 1
            break;
        case 2 :
           //do order2
            return;
            break;
        default: 
            cout << "Bad input";
            break;
    }
}

但是结果是这个错误:

错误C2236:意外的令牌“枚举”。 您忘记了“;”吗?

此错误的原因是什么?

还有其他方法可以用字符串编写开关吗?

不要和语言打架。 众所周知,您无法在C ++中打开字符串。

使用ifelse if使用if

您确实会不时看到各种尝试。 地图,枚举和哈希是我可以想到的三个。 但是他们只是混淆。 您可能需要break语句,这会使情况进一步恶化。 (如果遵循是有用的,则相应地构造if块)。

您的; 错误是由于string enum在语法上无效。

这是什么 :-

string enum {
    next  = 0,
    prev  = 1,
    ext   = 2
    }order;

它应该是:-

enum Mydata {
        next  = 0,
        prev  = 1,
        ext   = 2
        };

错误来自:

string enum {
    next  = 0,
    prev  = 1,
    ext   = 2
}order;  

这是无效的语法,枚举和字符串都是类型,您不能使用其他保留关键字创建该类型的实例。

相反,您想要这样声明枚举:

enum order{
    next  = 0,
    prev  = 1,
    ext   = 2
};

但是很有可能您真的不想以这种方式解决问题。 一种简单的方法是将条件语句与if语句或什至std::map使用。

cin >> order;
if(order == "0"){

}else if( order == "1"){

}else{

}

原因是因为“字符串枚举”无效。 这是一个例子:

 enum Orders{
     next=0,
     prev=1,
     ext=2
    };

    while(true)
   {
    int oder=-1;
    cin>>order;
    switch(order)
      {
      case next:
       //do something
        break;
      case prev:
        //do something else
        break;
      case ext:
        //something else
        break;
      default:
        cout << "error\n";
        break;
      }
     }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM