switch nur mit integer?
-
Hallo,...
habe folgendes Proglem:
Mein Programm soll aus einer Konfigurationsdatei Schlüsselwörter zu bestimmten typen auslesen.
Das Format in der Config-Datei sieht so aus:
date:"Datum:"
time:"Zeit:"
temperature:"Temperatur:"
alles bis zum Doppelpunkt wird in der Variable char typ[255]; gespeichert.
Jetzt möchte ich mit switch folgende Fallunterscheidung machen:switch(typ)
{
case "date": anweisungen;
case "time": anweisungen;
case "temperature": anweisungen;
default: anweisungen;
}Beim kompilieren gibt er bei dieser Stelle Fehlermeldungen aus!
Was ist daran falsch?Florian
-
Kannst nur ganzzahlige Ausdrücke "switchen". Musst if verwenden.
-
Ok, danke für die Antwort!
Florian
-
... jo und strcmp(), weil du ja nicht die pointer vergleichen willst, sondern den "inhalt" des speicherbereiches, auf den sie zeigen.
-
@Doc:
Danke für die Ergänzung@Florian:
Achte darauf, dass strcmp 0 zurück gibt, wenn die Strings gleich sind! Und nicht 1, wie man meistens denkt.
-
Original erstellt von <Florian>:
**Hallo,...habe folgendes Proglem:
Mein Programm soll aus einer Konfigurationsdatei Schlüsselwörter zu bestimmten typen auslesen.
Das Format in der Config-Datei sieht so aus:
date:"Datum:"
time:"Zeit:"
temperature:"Temperatur:"
alles bis zum Doppelpunkt wird in der Variable char typ[255]; gespeichert.
Jetzt möchte ich mit switch folgende Fallunterscheidung machen:switch(typ)
{
case "date": anweisungen;
case "time": anweisungen;
case "temperature": anweisungen;
default: anweisungen;
}Beim kompilieren gibt er bei dieser Stelle Fehlermeldungen aus!
Was ist daran falsch?Florian**
Oder DU machst es so:
switch ( typ.substr(1,1) { // == a i e case 'a': Anweisung ; break; case 'i': Anweisung ; break; default : anweisung ;break // das klappt aber nur, wenn keine weiteren Optionen }
Hanns
;
-
so gehts auch mit switch:
enum values{date=0,time,temp,end); const cahr const a[][]={"Date","Time","temp"}; //... int getValue(char *d) { int i; for(i=0;i!=end;i++) if(strcmp(a[i],d)==0) return i; } //... switch(getValue(blah)) { case date://... case time: case temp: }
Find ich soo recht gut gelöst...
[ Dieser Beitrag wurde am 13.10.2002 um 19:51 Uhr von xroads42 editiert. ]
-
Danke für die Antworten, ich habs jetzt schon zu der
if(strcmp(typ,"date")==0)
{
...
}umgeschrieben, hat auch ganz gut geklappt!
Florian