Logische Frage zum Parsen
-
Hey Leute,
ich hab mal eine rein logische Frage zum Thema String-Parsing.
Angenommen man hat die Funktion gegeben:int parseNumber( string in, int at ) int parseChar( string in, int at, char ch ) int parseFloat( string in, int at )
Jede Funktion schluckt erst alle Whitechars und arbeitet dann weiter.
Um also eine Reelle zahl zu lesen, müsste man ja wie folgt vorgehen:int n1,dot,n2; n1 = parseNumber( in, at ); dot = parseChar( in, at+n1, "." ); n2 = parseNumber( in, at+dot );
Das funktioniert alles sehr gut, nur was ist wenn dieser string gegeben ist:
"13.37 D "
So wie ich es angegangen bin, parst er mir natürlich erfolgreich eine Reelle Zahl. Aber vom logischen ist der String keine Reelle Zahl weil hinter dem 37 noch ein D kommt.
Wie würdet ihr dies umstrukturieren bzw lösen?mfg
:xmas1:
-
mach noch einen Test, ob der String zu ende gelesen wurde. wnen nicht -> kein Match.
-
Die Funktionen schauen komisch aus. Aber warum schaust du nicht einfach ob du den ganzen String geparst hast?
-
Ja ich weiß die schauen komisch aus, sollen ja nur die eigentlichen verdeutlichen.
Ok also einfach nur schauen ob man am Ende angelangt ist..ok danke!
-
Wenn jede der 3 Funktionen Whitespaces am Anfang schluckt, dann würde ja auch
13 . 37
als reelle Zahl geparst werden (ist eigentlich unüblich)!