switch: Strings, const und Error
-
hi:D
ich habe nun drei Probleme bzw. Fragen^^
Also ich fang da mal an:1. Strings:
string name = "Daniel"; string antw1 = "Daniel"; string antw2 = "Admin"; switch(name) { case "Daniel": std::cout<<"Daniel!"<<endl; case "Admin": std::cout<<"Admin!"<<endl; }J:\C++\Übungen\Übung01.cpp:10: error: switch quantity not an integer
switch(name) { case antw1: std::cout<<"Daniel!"<<endl; case antw2: std::cout<<"Admin!"<<endl; }J:\C++\Übungen\Übung01.cpp:10: error: switch quantity not an integer
J:\C++\Übungen\Übung01.cpp:12: error:antw1' cannot appear in a constant-expression J:\\C++\\Übungen\\Übung01.cpp:14: error:antw2' cannot appear in a constant-expressionWarum ist das mein ersten Code falsch? da steht,dass des halt kein Integer ist -.-, muss des einer überhaupt sein?Ich meine ja es geht auch char und so,nur wieso kein String?
Zum Zweiten.. wieso kann ich nach case "" keine variable hinschreiben,sondern muss immer das Ergebnis(Intialisierte Objekt) hincoden oO?2.const
Hier wollte ich eigentlich fragen,wann und wo man bei der switch-anweisung ein const braucht

3.Fehler/Error
switch quantity not an integer
.. Was ist damit eigentlich gemeint?
Mfg Daniel
-
switch funktioniert nur mit Integer- oder char-Variablen (keine Char-Arrays!). Enums gehen auch noch...
-
switch case arbeitet nur mit integer.
Google + "switch case in c++" = http://tutorial.schornboeck.net/switch.htm
ausserdem wäre da bestimmt noch was in der FAQ zum thema Stringverleich.
-
Irgendwo kam die Frage schonmal auf mit der interessanten Antwort, dass man das Verbot von String durch Verwendunug einer map umgehen kann:
#include <iostream> #include <map> #include <string> using namespace std; int main(void) { map<string, int> myMap; myMap["Daniel"] = 1; myMap["Admin"] = 2; string name; cin >> name; switch(myMap[name]) { case 1: cout << "Daniel wurde genommen!" << endl; break; case 2: cout << "Admin wurde genommen!" << endl; break; default: cout << "Ungueltige Auswahl!" << endl; break; } return 0; }Felix
-
umgehn iss gut ... mit der kirche ums dorf .... nein um den mond ... warum nicht gleich um die sonne ...
wenn schon map dann einfach
MyMap[name]
-
Ceos schrieb:
wenn schon map dann einfach
MyMap[name]Phoemuex schrieb:
switch(myMap[name])
Nochmal der Link zu dem alten Thread und dem Codeguru-Artikel:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-109487-and-highlight-is-.html