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)!


Anmelden zum Antworten