unXtremo
Ensign
- Registriert
- Feb. 2009
- Beiträge
- 228
Hallo zusammen ich hänge gerade an einer Stelle bei der Umwandlung von einem String in ein double:
Ich habe einen String, der drei verschiedene Formen annehmen kann:
z.B.:
Typ1 (nur Zahl): "1"
Typ2 (nur Konstante): "var"
Typ3 (Zahl und Konstante): "2var"
Ich habe jetzt folgenden Codeschnipsel:
Mein Problem ist jetzt die if-Bedingung von Typ2 und Typ3, leider trifft immer der Fehler Fall auf.
Ich hätte für Typ2 ja:
Was funktioniert ist, dass ich in die Bedingung *restString == 'v' schreibe, dann wird das Ergebnis richtig, aber mein auszuwertender String könnte dann ja auch "2vblub" sein und würde trotzdem als "2var" interpretiert werden.
Was mache ich mit meiner Bedingung falsch?
Ich habe einen String, der drei verschiedene Formen annehmen kann:
z.B.:
Typ1 (nur Zahl): "1"
Typ2 (nur Konstante): "var"
Typ3 (Zahl und Konstante): "2var"
Ich habe jetzt folgenden Codeschnipsel:
Code:
const double MEINE_KONSTANTE = 42;
string str = "2var";
char* restString;
double tmpZahl, zahl;
tmpZahl = strtod(str.c_str(), &restString);
if(*restString == '\0') { // Typ1
zahl = tmpZahl;
} else if(tmpZahl == 0 && restString == "var") { // Typ2
zahl = MEINE_KONSTANTE;
} else if(tmpZahl != 0 && restString == "var") { // Typ3
zahl = tmpZahl * MEINE_KONSTANTE;
} else {
cout << "Fehler: " << tmpZahl << " | " << restString << " | " << *restString << endl;
}
Mein Problem ist jetzt die if-Bedingung von Typ2 und Typ3, leider trifft immer der Fehler Fall auf.
Ich hätte für Typ2 ja:
Code:
tmpZahl == 2
restString == "var"
*restString == 'v'
Was mache ich mit meiner Bedingung falsch?