首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问,怎样将字符串转成枚举的一个值

2013-10-30 
请教,怎样将字符串转成枚举的一个值?enum colour{red0,yellow1,blue2,white3,black4}enum colour i,

请教,怎样将字符串转成枚举的一个值?
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
[解决办法]

引用:
Quote: 引用:

map

if else

谢谢,map是啥啊?
就是要这样的效果
switch(aaa)
{
case ABC  : v = 100;           break;
case 12   : v = 150;           break;
default   : v = -1;
}

是说标准库的那个map,建一个从字符串到enum类型的映射。
如果enum值不多,你还是ifelse好了
[解决办法]
序列化与反序列化


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();
}



热点排行