[c++] string @ switch case

RuL3R

Commodore
Registriert
Dez. 2004
Beiträge
4.577
hi
ist es möglich einen string in eine switch case anweisung einzulesen ? bei mir will das nie richtig klappen ..
muss ich da irgend etwas spezielles bei beachten ?

also zum beispiel

Code:
switch(der_string){

case 'hallo': bla
case '12345': dingens ..

}
 
Die Lösung ist ganz einfach. Es geht nicht.

In einem switch bzw. case können nur Zahlen oder einzelne chars auftauchen.

MfG

Arnd
 
Du könntest das Problem z.B. mit einer Hash-Funktion lösen. :cool_alt:
Allerdings gibt es keine 100 %ige Garantie, dass keine Kollisionen auftreten!
 
Ich liebe Software die auf Zufall basiert :-).

Das ganze geht im wesentlichen nur über if und strcmp().

MfG

Arnd
 
Mit einer Map von Strings und Funktionszeigern könnte man sowas prima lösen.

Die Map hat den Vorteil, dass man für das Suchen des richtigen Statements nur logarithmische Komplexität hat, wogegen if-Kolonnen eine lineare Komplexität haben. Im Gegenzug muss eine Map natürlich erstmal aufgebaut werden und sie ist für nur wenige Elemente (ca. < 8) herzlich ineffizient.

Dafür ist mit einer Map (meiner Meinung nach) der Code einfacher lesbar. Und er ist (nicht nur meine Meinung :)) nicht so statisch und einfacher wartbar.

Es hängt also hauptsächlich von deinen Anwendungsfällen ab, welche Lösung du versuchen willst.
 
Da kommt der NACER (muhaha :evillol: ) schon wieder mit seinen Maps.
Also in meinem Falle war eine Lösung mit solchen doch sehr komplexen (wenn man sie neu anlernen muss) Klassen wirklich etwas übertrieben.
Ich würde dir auch eher zu einem einfachen strcmp, oder wenn du C++ strings hast zu einer if-abfrage mit string1==string2. Sollte ja nicht zu schwer sein.

mfg
 
Bei waren es ja auch die Funktoren mit dem Member-Pointern, die das ganze etwas dicker gemacht haben, nicht die Maps selbst :) Meine Philosphie ist einfach "try something different", nur damit man mal etwas anderes ausprobiert hat und es ein wenig kennt. Wenn es weniger brauchbar ist als anderes, hat man zumindest ein wenig Erfahrung gesammelt :)

Sehr wichtig ist einfach die Erfahrung (und die bekommt man nur durch Ausprobieren), welches Konzept wann, wo und wie welche Vor- und Nachteile hat. Dabei stellt man fest, dass man immerwieder bestimmte Mustern benutzt, wenn man sie einmal erfolgreich angewandt hat. Beim Schreiben größerer Software ist es unschätzbar wertvoll zu wissen, ob und warum ein Konzept funktioniert und wie man dafür (oder gegen ein anderes) argumentieren kann.
 
Zuletzt bearbeitet:
Lange if Kolonnen sind mir ebenfalls ein Grauss :-).

Von daher hat so eine Map oder alternativ eine Struktur auf jeden Fall Vorteile bzgl der Übersichtlichkeit des Codes. Auch wenn die darunter liegende Funktionalität dann etwas komplexer ist.

MfG

Arnd
 
Code:
if(...){}else if(...){}else {}

das ist ja auch nichts anderes als eine switch anweisung in schlecht aufgeschrieben. Allerdings könnte es in diesem Falle halt nötig sein.

mfg
 
achso hmm ja so könnte man es machen. mal gucken ob das dann noch so übersichtlich wird .. ;)
 
Zurück
Oben