【问题标题】:How to convert from string to enum value in c++? [duplicate]如何在 C++ 中从字符串转换为枚举值? [复制]
【发布时间】:2017-07-29 12:49:09
【问题描述】:

我有一个这样的枚举

enum week{Mon, Tue, Wed, Thur, Fri, Sat, Sun};

我正在尝试通过传递字符串值来获取枚举的索引值。

例如,GetenumIndex("Mon") 将返回 0

函数原型如下:

week GetenumIndex(string )

C++中实现这种转换函数的惯用方式是什么?

【问题讨论】:

  • 使用许多if() else if() 语句应该很容易。你已经试过了吗?
  • 您的问题中缺少一些非常重要的内容。那将是一个实际的、具体的问题。
  • 您可以使用 map 将字符串映射到枚举值。
  • thnx man 现在我编辑了。现在你能帮我吗@SamVarshavchik
  • 没有。仍然没有任何实际的编程问题可以找到。 “谁能帮助我”不是一个特定的编程问题。

标签: c++ enums


【解决方案1】:

好吧,给你:

#include <iostream>
#include <string>
#include <map>
#include <exception>

enum week{Mon, Tue, Wed, Thur, Fri, Sat, Sun};

week GetenumIndex( const std::string s ) {    
    static std::map<std::string,week> string2week {
       { "Mon", Mon }, 
       { "Tue", Tue },
       { "Wed", Wed }, 
       { "Thur", Thur },
       { "Fri", Fri },
       { "Sat", Sat }, 
       { "Sun", Sun }   
    };
    auto x = string2week.find(s);
    if(x != std::end(string2week)) {
        return x->second;
    }
    throw std::invalid_argument("s");
}

int main() {
    week w = GetenumIndex("Thur");
    std::cout << w << std::endl;
}

现场观看here

【讨论】:

  • @user8364661 好吧,以重复的形式结束该问题是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-29
  • 2012-01-03
  • 2012-04-30
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
相关资源
最近更新 更多