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 🙂


Anmelden zum Antworten