Switch-Case für CStringT



  • Hey,
    gibt es bei VC++ eigetlich sowas wie eine Switch-Case Anweisung für CStringT? Oder müsste man sich da selber was basteln?

    Mein Problem ist folgendes:
    Ich hab ein txt-File das ich auslese. Meine ausgelesenen Strings haben folgendes Format:

    m_sTest = 04.87

    m_sTest ist auch der Name einer Variablen in meinem Programm. In dem ganzen File sind ca. 100 Variablen gespeichert, die einzeln ausgelesen werden und der Wert in die zugehörigen Variablen gespeichert werden sollten.
    Nun extrahier ich mir den Variablennamen, so hab ich einen String in dem zB. nur noch

    "m_sTest"

    steht. Nun soll der Wert der nach dem "=" folgt meiner CString m_sTest zugewiesen werden. Und das eben für alle Variablen.
    Leider kann ich nicht davon ausgehn, das alle Variablen in dem File vorhanden sind geschweige denn in der richtigen Reihenfolge.
    Also müsste ich je nach extrahiertem String den Wert einer anderen Variablen zuweisen.
    Und statt einer 100-fach verschachtelten if-Bedingung wäre eine Switch-Case angenehmer.

    Danke im Voraus

    Grüßle



  • //statt
    
    switch() {
      case:
      case:
      case:
      case:
    }
    
    //das hier nehmen
    if() {
    }else if() {
    }else if() {
    }else if() {
    }else if() {
    }
    
    //kommt doch fast aufs Gleiche raus...
    
    //Verschachteln brauchst du da nicht mehr als beim switch, ist ja alles auf der gleichen Ebene.
    


  • Wenn du unbedingt ne Switch haben willst, erstellste dir ein CStringArray mit allen möglichen Name, vergleichtst deinen eingelesenen Name mit allen aus dem Array und über den Indes des gefundenen Eintrages kannste dann deine Switch bemühen.

    Gruß Matthias



  • Jo das wäre auch meine Idee gewesen, falls es sowas nicht gibt.

    Danke für eure Antworten, werd mal schaun wie ichs mach.



  • also bequem geht das schon

    pseudo:

    std::map<CString, double> alles;
    /* .. fuell map mit allen strings: all.insert(string, 0); .. */
    
    /* .. zuweisen - lesen - fuellen alles ueber den [] operator; hier zb fuellen  .. */
    foreach double wert in werte
        alles[name] = wert;
    

Anmelden zum Antworten