请教,怎样将字符串转成枚举的一个值?
enum colour{red=0,yellow=1,blue=2,white=3,black=4};
enum colour i,j,k,pri;
int main(int argc,char* argv[])
{
pri=red;
switch(pri){
case red : printf("asfasdfsd"); break;
default : printf("xxxxxxx");
}
我想读取一个文本字符串,值是 RED,BLUE之类的,使得pri的值等于RED,BLUE
等,那就可以在SWITCH里使用字符串了
谢谢
[解决办法]
自己写个转换函数就可以了啊
例如
colour Convert(const string& str)
{
if(str == “”)
return XX
}
[解决办法]
额外条件判断后,满足再赋值!
[解决办法]
Java这类的语主支持字符串的switch, 但是c/c++中就只能是字符串比较了, 或者使用map吧, 把串作key.
map<string,enumType>
[解决办法]
编译之后,只有二进制值,exe程序是不懂得有个叫枚举的东西
[解决办法]
map
或
if else
[解决办法]
enum colour{red=0,yellow=1,blue=2,white=3,black=4};
std::istringstream& operator >> (std::istringstream& iss, colour & c);
std::ostringstream& operator >> (std::ostringstream& oss, colour c);
template <typename T>
T fromString(std::string const& s)
{
std::istringstream is(s);
T t;
iss >> t;
return t;
}
template <typename T>
std::string toString(T const& t)
{
std::ostringstream os;
oss << t;
return oss.str();
}
enum colour{red=0,yellow=1,blue=2,white=3,black=4};
std::istringstream& operator >> (std::istringstream& iss, colour & c);
std::ostringstream& operator << (std::ostringstream& oss, colour c);
template <typename T>
T fromString(std::string const& s)
{
std::istringstream is(s);
T t;
iss >> t;
return t;
}
template <typename T>
std::string toString(T const& t)
{
std::ostringstream os;
oss << t;
return oss.str();
}