Switch Anweisung mit Variablen verwenden



  • Hallo,
    ich möchte gerne in einer Anwendung eine Switch Anweisung verwenden und zwar wie folgt:

    CString sFieldSeperator = "\t"; // MFC String
    
    switch (buffer[0]) // Im Buffer steht irgendetwas aus einer Datei
    {
      case sFieldSeperator:
        // Code
        break;
    
       // .
       // .
       // .
       // weiter case Blöcke
      default:
        // defualt block
        break;
    }
    

    Ich bekomme dann allerdings beim komplilieren folgende Fehlermeldung:
    case-Ausdruck ist keine Konstante

    Gibt es keine Möglichkeit Variablen in Switch Anweisungen zu verwenden? Das ganze soll nähmlich so Variable wie möglich sein. Oder muss ich das mit verschachtelten IF Anweisungen machen?

    Gruß Hubibi



  • Nein, switch-case klappt wirklich nur mit Compilezeit-Konstanten (das hängt damit zusammen, WIE diese Anweisungen optimiert werden können). Für Variablen kommst du leider nicht um eine if-else-Kaskade drumherum.

    (wobei - eine Möglichkeit gibt es noch - du stellst dir einen String aus allen Spezialchar's zusammen und suchst dir dann den Index deines Zeichens in diesem String als switch-Ausdruck)



  • Außerdem sind die Datentypen nicht kompatibel: char != CString

    Du kannst aber folgendes schreiben:

    const char cFieldSeparator = '\t'; // nun konstant
    
    switch (buffer[0]) // Im Buffer steht irgendetwas aus einer Datei
    {
      case cFieldSeparator:
        // Code
    }
    

    Wenn du aber wirklich Strings vergleichen willst, dann geht dies nur mit "if"-Anweisungen.


Anmelden zum Antworten