Switch für Strings
-
Gibt es eine Switch-ähnlich Funktion für Strings und Chars???
Könnte jede Hilfe gebrauchen
-
std::map
-
kapeir ich nicht - bin Newbie
-
Original erstellt von Jagie:
Gibt es eine Switch-ähnlich Funktion für Strings und Chars???Für einzelne chars gehts: also switch(x) { case 'a': .. case 'b': ..}
Für strings gibts nichts. Nur if-Abfragen.
-
Hi!
Ich wüsste nicht wie ne map helfen soll.
switch für strings gibts nicht, Du wirst Dir ein konstrukt aus
if
else if
elsebauen müssen.
-
Hab ich schon - dachte es geht vielleicht leichter.
Trozdem danke!
-
Ich wüsste nicht wie ne map helfen soll.
std::map<std::string, Funktionszeiger>
-
Original erstellt von Knuddlbaer:
Ich wüsste nicht wie ne map helfen soll.std::map<std::string, FunctionObject>
-
lol :p
-
lol, aber der echte (du) war schneller als der fake (ich)
-
Original erstellt von <gast>:
std::map<std::string, Funktionszeiger>Ein wenig übertrieben ?!
-
nein !
-
Ein wenig übertrieben ?!
Vielleicht. Aber der Map-Ansatz ist eine gängige Alternative zu switch-case.
-
Hmm... Ein Beispiel wo es sinn machen würde ?
Ich kann nur die gleiche Signatur einer Funktion speichern ?!
-
quick und dirty hingeschmiert
class Base { public: virtual void do() = 0; }; class Ja { public: virtual void do() {cout << "Ja\n";} }; class Nein { public: virtual void do() {cout << "Nein\n";} }; class Default { public: virtual void do() {cout << "*bumm*\n";} }; map<std::string, Base*> switch; Nein nein; Ja ja; Default def; switch.insert(make_pair<std::string, Base*>("Ja", &ja)); switch.insert(make_pair<std::string, Base*>("Nein", &nein)); switch.insert(make_pair<std::string, Base*>("Default", &def)); // case: iterator<blasomething> it = switch.find("Nein"); if (it != switch.end()) it->second->do(); else switch.find("Default")->second->do();
Läßt innerhalb der Funktionsobjekte eine erhebliche Packungsdichte zu, da es dort komplexe Funktionen und Member geben kann.
Kannst das z.B. für eine Parsinganwendung machen, wo Du je nach Reizwort in eine andere Funktion schalten willst.
Das do läßt sich über Membervariablen und den Konstruktor der jeweiligen Klasse auch mit Parametern versorgen, so daß sich andere Signaturen realisieren lassen.
-
*patsch*
Cool auf so ne idee bin ich nich gekommen.
thxIch schliese mich nun der Meinung an:
std::map kann helfen bei switch und string O