enum week{Mon, Tue, Wed, Thur, Fri, Sat, Sun};
枚举我想传递一个字符串值,以获得枚举的索引值。例如,GetenumIndex("Mon")
将返回0
。
函数的原型是这样的:
week GetenumIndex(string)
什么是C++的惯用方式来实现这样的转换功能?
enum week{Mon, Tue, Wed, Thur, Fri, Sat, Sun};
枚举我想传递一个字符串值,以获得枚举的索引值。例如,GetenumIndex("Mon")
将返回0
。
函数的原型是这样的:
week GetenumIndex(string)
什么是C++的惯用方式来实现这样的转换功能?
那么,在这里你去:
#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。
thanx先生帮助我out.You不只是其他人只是浪费对方的时间出来回答我@Sam Varshavchik – user8364661
@ user8364661那么,关闭这个问题,因为重复是正确的。 – user0042
这应该很容易使用一些'if()else if()'语句。你已经尝试过了吗? – user0042
你的问题中缺少一些非常重要的东西。那将是一个实际的,具体的问题。 –
你可以使用映射字符串到枚举值的[map](http://en.cppreference.com/w/cpp/container/unordered_map)。 –