如何查找给定字符串的 ENUM 类型?
How to look up the ENUM type given a string?
我有一个这样的枚举 class:
class ContentTypeEnum {
public:
// it might have more types
enum Code { TEXT, XML, APPLICATION_JSON};
static const char* to_c_str(unsigned);
};
我现在在我的代码中是这样使用它的。
ContentTypeEnum::APPLICATION_JSON
问题陈述:-
现在我给定了一个字符串,所以我需要使用该字符串,然后通过在上面的枚举中迭代它来找到实际的 ENUM 类型。
下面是我的代码:
cout<<"Given String: " << data_args->pp_args->ter_strings[0].c_str() << endl;
const char* test_str = data_args->pp_args->ter_strings[0].c_str();
现在如果test_str
是xml
或XML
,那么我需要这样设置:
TestClass::SetContentType(ContentTypeEnum::XML)
但是如果test_str
是application_json
或者APPLICATION_JSON
,那么我需要这样设置:
TestClass::SetContentType(ContentTypeEnum::APPLICATION_JSON)
其他人也一样。以下是我的完整代码:
cout<<"Given String: " << data_args->pp_args->ter_strings[0].c_str() << endl;
char* test_str = data_args->pp_args->ter_strings[0].c_str();
// look up the exact ContentType from the enum using test_str string
// and then set it to below method.
TestClass::SetContentType(set_it_here_basis_on_string_test_str)
如果有人传递任何不在我的枚举中的未知字符串,那么它应该默认使用 TestClass::SetContentType(ContentTypeEnum::APPLICATION_JSON)
查找给定字符串的确切枚举类型的正确方法是什么?
我建议编写一个函数,returns enum
给定一个字符串。
Code getCode(std::string const& s)
{
static std::map<std::string, Code> theMap{{"TEXT", TEXT},
{"XML", XML}
{"APPLICATION_JSON", APPLICATION_JSON}};
std::map<std::string, Code>::iterator it = theMap.find(s);
if ( it != theMap.end() )
{
return it->second;
}
return APPLICATION_JSON;
}
我有一个这样的枚举 class:
class ContentTypeEnum {
public:
// it might have more types
enum Code { TEXT, XML, APPLICATION_JSON};
static const char* to_c_str(unsigned);
};
我现在在我的代码中是这样使用它的。
ContentTypeEnum::APPLICATION_JSON
问题陈述:-
现在我给定了一个字符串,所以我需要使用该字符串,然后通过在上面的枚举中迭代它来找到实际的 ENUM 类型。
下面是我的代码:
cout<<"Given String: " << data_args->pp_args->ter_strings[0].c_str() << endl;
const char* test_str = data_args->pp_args->ter_strings[0].c_str();
现在如果test_str
是xml
或XML
,那么我需要这样设置:
TestClass::SetContentType(ContentTypeEnum::XML)
但是如果test_str
是application_json
或者APPLICATION_JSON
,那么我需要这样设置:
TestClass::SetContentType(ContentTypeEnum::APPLICATION_JSON)
其他人也一样。以下是我的完整代码:
cout<<"Given String: " << data_args->pp_args->ter_strings[0].c_str() << endl;
char* test_str = data_args->pp_args->ter_strings[0].c_str();
// look up the exact ContentType from the enum using test_str string
// and then set it to below method.
TestClass::SetContentType(set_it_here_basis_on_string_test_str)
如果有人传递任何不在我的枚举中的未知字符串,那么它应该默认使用 TestClass::SetContentType(ContentTypeEnum::APPLICATION_JSON)
查找给定字符串的确切枚举类型的正确方法是什么?
我建议编写一个函数,returns enum
给定一个字符串。
Code getCode(std::string const& s)
{
static std::map<std::string, Code> theMap{{"TEXT", TEXT},
{"XML", XML}
{"APPLICATION_JSON", APPLICATION_JSON}};
std::map<std::string, Code>::iterator it = theMap.find(s);
if ( it != theMap.end() )
{
return it->second;
}
return APPLICATION_JSON;
}