Witam
Musze napisac program w C ktory zmienia string pobierany ze standardowego wejscia na typ wyliczeniowy enum. Jak to zrobic?
0
3
Najtrudniejsza rzecz, to wydobyć stringowe wartości enum'a, na co nie ma innych sposobów niż prepreocesor i użycie #
Potem "tylko" pętla, if itd...
Moze to pomoże
https://stackoverflow.com/questions/9907160/how-to-convert-enum-names-to-string-in-c
2
Opisz dokładnie co to ma robić i jaki jest tego kontekst.
Czy mając typ:
enum SomeEnum { V1, V2, V3 };
chcesz dostać wartości V1, V2, V3 po podaniu stosownego c-stringa, czy co dokładnie?
2
W C i C++ (może będzie od C++23) nie ma metadanych, więc konwersja "napis <-> wartość enum", jest dość pracochłonna.
Dlatego popieram stwierdzenie, by autor pytania lepiej opisał swoje zadanie (więcej szczegółów).
0
#include <stdio.h>
#include <stdlib.h>
enum Color { red, blue, green };
struct { enum Color color; const char *text; } color_tb[]=
{
{ red, "czerwony" },
{ blue, "niebieski" },
{ green, "zielony" },
};
enum Color to_Kolor(const char *text,enum Color def)
{
int i;
for(i=0;i<sizeof(color_tb)/sizeof(*color_tb);++i)
{
if(!strcmp(text,color_tb[i].text)) return color_tb[i].color;
}
return def;
}
const char *from_Kolor(enum Color color)
{
int i;
for(i=0;i<sizeof(color_tb)/sizeof(*color_tb);++i)
{
if(color==color_tb[i].color) return color_tb[i].text;
}
return "";
}
int main()
{
return 0;
}