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)。 –