I nomi contenuti in un enum sono simboli esistenti solo al momento della compilazione, non puoi convertire automaticamente una stringa in un enum. Di norma per fare questo si fa così:
codice:
#include <iostream>
using namespace std;
enum inutile
{
cactus,
macachi,
cannibali,
Alcibiade
};
int main()
{
char buf[256];
inutile i;
cin>>buf;
if(strcmp(buf,"cactus")==0)
i=cactus;
else if(strcmp(buf,"macachi")==0)
i=macachi;
else if(strcmp(buf,"cannibali")==0)
i=cannibali;
else if(strcmp(buf,"Alcibiade")==0)
i=Alcibiade;
else
cout<<"Scelta non valida"<<endl;
//...
return 0;
}
ma volendo ti puoi aiutare un pochino con una macro:
codice:
#define STR2ENUMIF(stringvar,enumvar,enumval) if(strcmp(stringvar,#enumval)==0) enumvar=enumval;
#include <iostream>
using namespace std;
enum inutile
{
cactus,
macachi,
cannibali,
Alcibiade
};
int main()
{
char buf[256];
inutile i;
cin>>buf;
STR2ENUMIF(buf,i,cactus)
else STR2ENUMIF(buf,i,macachi)
else STR2ENUMIF(buf,i,cannibali)
else STR2ENUMIF(buf,i,Alcibiade)
else
cout<<"Scelta non valida"<<endl;
//...
return 0;
}
.