findiger Baudratenwechsel



  • Hey Jungz

    Im POSIX-Header sind ja einen enum für die verschiedenen Baudraten:

    B0 - B115200 entspricht den Werten 0 - 18.

    Ich möchte nun, dass der User in meine ini-File eine Baudrate angeben kann, als String versteht sich. Da wär's jetzt lässig, wenn der user z.B. den String "B300" eintippen würde und ich daraus irgendwie direkt die Variable B300 anwählen könnte (also 7).

    Natürlich könnte ich das mit irgendeiner Funktion lösen

    ...
    if(strcmp(strBdRt, "B300") == 0) {
    return B300;
    } else if (...) {
    ...
    }
    ...
    

    , erscheint mir aber ziemlich aufwändig. Gibt's für so was eine elegantere Lösung 🙂 ?

    Thanks und greeetz@all
    Kessi



  • Hallo

    direkt konvertieren geht nicht, denn zur Laufzeit sind die Symbole der Konstanten nicht mehr bekannt.
    Du kannst zum Beispiel eine std::map verwenden, um zumindestens eine einfache Zuordnung zu haben. Füllen must du die map aber noch selber.

    bis bald
    akari



  • direkt konvertieren geht nicht, denn zur Laufzeit sind die Symbole der Konstanten nicht mehr bekannt.

    Ziemlich unscheinbar, der Satz, aber eigentlich extrem logisch und ziemlich fundamental 🙄 .

    Tja, ich schätze, dann werde ich mit der map Vorlieb nehmen müssen.

    Thx und greeetz
    Kessi



  • Ähm. Ich würde den String in nen integer parsen, und den dann gegen eine Liste möglicher Werte vergleichen. std::mapstd::string geht natürlich, ist aber IMHO volle Kanne overkill für das Problem.


Anmelden zum Antworten