Konvertierung String zu enum
-
Hallo,
ich habe folgendes Problem. Ich nutze eine Klasse, in der ist sowas definiert:
enum BaudRateType { BAUD50, BAUD75, ... }Dann gibt es die Methode setBaudrate, die ein BaudRateType erwartet. Wie kann ich jetzt einen String z.B. "50" am einfachsten in BAUD50 konvertieren, damit ich damit die setBaudrate Methode füttern kann?
Viele Grüße
-
Eine eigene Konvertierungsfunktion schreiben. Was anderes wird dir nicht übrig bleiben...
-
Hast du da einen intelligenten Ansatz oder soll ich da stur eine switch Abfrage machen?
-
Grob sowas in der Art:
#include <iostream> #include <string> // enum MyType { TypeZero, TypeOne, TypeTwo, TypeThree, Error }; static const std::string MyTypeStr[] = { "Zero", "One", "Two", "Three" }; // const std::string MyTypeToStr(MyType t) { assert(t >= TypeOne && t <= TypeThree); // Auf gueltigen Typ achten return MyTypeStr[t]; } MyType StrToMyType(std::string s) { for (unsigned int i = 0; i < sizeof(MyTypeStr) / sizeof(MyTypeStr[0]); i++) if (s == MyTypeStr[i]) return static_cast<MyType>(i); // Fehlerfall! return Error; } // int main() { MyType t = TypeTwo; std::string s = "Three"; std::cout << MyTypeToStr(t) << std::endl; std::cout << StrToMyType(s) << std::endl; }
-
Wie wäre es mit einer
std::map<std::string, BaudRateType>?
-
Wie wär's mit einfach
if+strcmp(bzw.stricmp)?
Ich behaupte mal dass das eine Funktion ist, die so simpel ist, dass es ziemlich egal ist wie man sie löst