String in Code umwandeln



  • Hallo ihr Lieben.
    Ich habe eine Frage: Wie kann man einen String "ausrechnen" lassen? Also wenn man zum Beispiel in die Konsole eingibt: 2+2, und das als String gespeichert wird, wie kann man das dann ausrechnen? Geht sowas überhaupt?

    Vielen Dank schonmal im Voraus.



  • Der String muss ausgewertet (parsen) werden; dabei wird der Text in Teile zerlegt. Zahlen werden umgewandelt (int, float, u.a.) und danach die zugehörige Rechenoperation aufgerufen.

    Für das Zerlegen von Strings gibt es Bibliotheken.

    Siehe auch:
    http://de.wikipedia.org/wiki/Parser



  • Da C++ nicht interpretiert wird kannst du keinen beliebigen C++-Code eingeben lassen und ausführen lassen. Da müsstest du schon zwischendurch wieder einen Compiler aufrufen.

    Für einen kleinen Taschenrechner empfiehlt es sich einen Parser zu schreiben (bzw. einen vorgefertigten zu nehmen) und das Ergebnis zu evaluieren.

    MfG SideWinder



  • OK. Ich habe mir das Tutorial(http://www.c-plusplus.net/forum/268247) zu Gemüte geführt und den Quelltext erstmal gedownloadet. Wenn ich diesen kompiliere, geht noch alles glatt. Wenn das Programm dann allerdings startet, kann ich auch ohne Probleme meinen String eingeben, nachdem ich 'Enter' gedrückt habe, kommt aber immer folgende Meldung: "Debug Assertion Failed! ....". Wenn ich dann auf ignorieren klicke, steht das Ergebnis auch da. Wie kriege ich also die Fehlermeldung weg?

    Schonmal danke im Voraus.



  • Frag das am besten direkt im dortigen Thread, es dürfte sich um einen Programmiererfehler im Code handeln.

    MfG SideWinder



  • Auch wenn der von 2010 ist?



  • 3P!CF41L schrieb:

    OK. Ich habe mir das Tutorial(http://www.c-plusplus.net/forum/268247) zu Gemüte geführt ...
    , nachdem ich 'Enter' gedrückt habe, kommt aber immer folgende Meldung: "Debug Assertion Failed! ....". Wenn ich dann auf ignorieren klicke, steht das Ergebnis auch da. Wie kriege ich also die Fehlermeldung weg?

    Ich gehe davon aus, das Du Interpreterbau_1_C meinst ?

    Habe es gerade compiliert und ein paar Eingaben ausprobiert. Dabei sind keine Probleme aufgetaucht.

    Was hattest Du denn eingegeben ?

    Ich habe z.b. folgendes ausprobiert:

    Eingabe: 2+4
    6

    Eingabe: 2*5
    10

    Eingabe: 3*25
    75



  • OK. Das ist seltsam: Ich habe jetzt den Code nochmal in C gedownloadet und dann immer ins Projekt eingefügt, gestartet und: keine Probleme! Es liegt also am C++-Code. Vielen Dank für den Anstoß zur Überprüfung.



  • Nö, ich hab jetzt mal die CPP-Version Matheparser_3_Endspurt kompiliert, die läuft ohne Probleme.


Anmelden zum Antworten