Switch-Befehl mit Strings, gibts da ne alternative?
-
Hola,
ich hätt da mal ne frage, ich will ein eifaches Programm schreiben um dialoge mit einem Computer führen zu können. Über den If Befehl klappt das auch schon aber wie is das mit switch
z. B.
#include <string>
und das namespace std{string antwort;
cout<<"Wie gehts?\n";
cin>> antwort;
switch (antwort)
{case gut: anweisung
case schlecht: anweisung
usw.}Da bekomm ich immer die Fehlermeldung das der switch wert eine Integer variable seien soll. Hab mich auch schon schlau gemacht und dem ist auch so.
Gibts da ne alternative zu diesem Befehl, oder wie könnte man das Lösen.
vielen Dank für die Hilfe
-
enum Value { Yes, No }; std::map<std::string,Value> sw; sw["Yes"] = Yes; sw["No"] = No; //... std::string str("Yes"); switch (sw[str]) { case Yes: //... case No: //... }
Sowas würde ich aber nicht in einem richtigen Programm verwenden...
-
*hier stand mist*
MfG SideWinder
-
Grimblegrumbl schrieb:
Gibts da ne alternative zu diesem Befehl, oder wie könnte man das Lösen.
vielen Dank für die Hilfeif(antwort == "gut") { ... }else if(antwort == "schlecht") { ... } usw.
-
Originalzitat:
Über den If Befehl klappt das auch schon aber wie is das mit switch
MfG SideWinder
-
ssm schrieb:
Grimblegrumbl schrieb:
Gibts da ne alternative zu diesem Befehl, oder wie könnte man das Lösen.
vielen Dank für die Hilfeif(antwort == "gut") { ... }else if(antwort == "schlecht") { ... } usw.
Herzlichen Glückwunsch, du hast den selben Mist gepostet, den gerade der SideWinder gelöscht hat...
-
psst :p
MfG SideWinder
-
Shlo schrieb:
ssm schrieb:
Grimblegrumbl schrieb:
Gibts da ne alternative zu diesem Befehl, oder wie könnte man das Lösen.
vielen Dank für die Hilfeif(antwort == "gut") { ... }else if(antwort == "schlecht") { ... } usw.
Herzlichen Glückwunsch, du hast gerade den selben Mist gepostet, den gerade der SideWinder gelöscht hat...
wieso Mist ?
es gibtbool operator==(const std::string &str, const char *pc);
-
Oh Gott..
Über den If Befehl klappt das auch schon aber wie is das mit switch
-
Ein switch geht nicht darauf. Man kann sich etwas basteln, dass es so ähnlich aussieht wie ein switch, aber das ist shit. Wenn du wirklich ein switch auf Strings haben möchtest bleibt dir noch die Möglichkeit das in C# zu schreibseln (da gips das afaik).
-
Shlo schrieb:
Oh Gott..
Über den If Befehl klappt das auch schon aber wie is das mit switch
Ach so!
ich brauche eine Brille zu kaufen
-
Die Vorgehensweise einer Prüfung von Arrays ist doch der Vergleich von einzelnen Werten 0..sizeof(str), warum also keine eigene Funktion bauen, die es bei switch ermöglicht? Immerhin macht eine if-Abfrage es implizit auch...
Nur eine theoretische Überlegung.
-
map undeclared in namespace std.
is mir alles ne nummer zu crass, bin noch n bloody beginner. Trotzdem vielen Dank.
-
#include <map>
-
Danke jetzt bin ich schon eine Fehlermeldung weiter.
Es geht um die Zeile
std:: map < std:: string, Value > sw;Value undeclared first use this funktion.
Vielen dank.
-
Du musst Value irgendwo definieren, aber nicht in einer Funktion:
enum Value { Yes, No }; void foo() { //std::map<> usw. }