Switch mit string-cases, geht das?
-
Ich habe einen z.B. einen Char test[20]
und will jetzt mit
[cpp]
switch(test){
case "dieses" : mach was....
}Mir Programmieraufwand ersparen, gibt es da eine Möglichkeit, oder muss ich da auf if(strcmp(test,"dieses")) ausweichen?
-
Nein, das geht nicht - switch funktioniert NUR mit ganzzahligen Datentypen (int in allen Variationen - inlusive char). Aber das dürfte dir dein Compiler auch mitteilen, wenn du den Code eintippst
-
Ja klar hat er mir das, aber ich wollte, bevor ich was komplizierteres mache, mal fragen, ob jemand nen Tip hat wie es doch geht
Trotzdem danke
-
Du könntest dir ja eine Stringtabelle aufstellen und dann mit man: bsearch deinen Stringwert in einen Index "umrechnen", den du dann an switch übergeben kannst.
-
Hab mich jetzt für if(strcmp(String,"NAME")==0) entschieden.
leider wird der Wert nie 0. Ich lese einen Wert aus einer text-Datei,
und cutte den mit strtok(). Wenn ich mir das ausgeben lasse, funktioniert das auch relativ gut, aber ich denke, da immer Return an jeder Zeile folgt, bleiben die \n dran, und es funktioniert nicht, mit dem strcmp.Ich hoffe das versteh jemand.
Gruß Peer
-
Hab gerade festgestellt, das man einfach an NAME noch ein \n zufügen muß, und dann geht es. Nicht schön, aber funktioniert.
-
Ich würde ja eher die '\n' aus den Strings entfernen. Ist ja keine Arbeit:
char *tmp; if(tmp = strchr(String, '\n')){ *tmp = '\0'; }
-
Noch einfacher ist es, wenn du das \n in die Trennzeichen für dein strtok() mit aufnimmst
-
CStoll schrieb:
Noch einfacher ist es, wenn du das \n in die Trennzeichen für dein strtok() mit aufnimmst
Hmmm, das habe ich beim ersten mal irgendwie überlesen