さて、ここであなたが行く:
#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それを参照してください。
これは、多くの 'if()else if()'ステートメントを使用すると非常に簡単になるはずです。あなたはすでにそれを試しましたか? – user0042
あなたの質問に欠けていることが非常に重要です。それは実際の具体的な質問でしょう。 –
文字列を列挙値にマップする[マップ](http://en.cppreference.com/w/cpp/container/unordered_map)を使用できます。 –