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 KonstanteGibt 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.