2013-04-22 15 views
6

Ich bin auf der Suche nach einem flexiblen, aber auch sehr schnellen Weg, um einfache Wertumwandlung und Berechnungen auf der Grundlage von beschreibenden Rechenfolgen durchzuführen.mathematische printf style Berechnung

Zum Beispiel so etwas wie dieses:

double r = 1.0; 
double d = mathf("sin(%1)+2*%2", r, M_PI); 
double e = mathf("%1/180.0 * %2", r, M_PI); 

Die wichtige denken, ist die mathematische Operationen zur Laufzeit und von Konfigurationsdatei geladen ausgewertet werden kann. Ich habe sogar über eine Art Skriptsprachenintegration nachgedacht, aber es scheint, dass es nicht glatt und schnell kommt?

Irgendwelche Ideen, wenn etwas wie mathf für C++ existiert?

+2

Wenn man sich die Interna eines 'printf suchen()' Implementierung, werden Sie feststellen, dass es nichts „glatt und schnell“ darüber ist. Parsen einer Formatzeichenkette, mit all den Optionen, die im Laufe der Zeit hinzugefügt werden, plus das Potenzial falscher Eingaben und wie man darauf sinnvoll (d. H. Ohne Absturz) reagiert ... – DevSolar

+0

schlank und schnell? Denken Sie darüber nach, wie Ihr Compiler arithmetische Ausdrücke verarbeitet ... – krsteeve

+0

Ich meinte "schlank und schnell" im Vergleich zu Python-Integration für diesen kleinen Betrieb. – Hhut

Antwort

5

Versuchen Sie, ein wenig mehr zu suchen. Das ist eine ziemlich gewöhnliche Sache. Es wird geparst, und jeder Compiler macht es. Macht das ein bisschen wie Parsception.

Solve equation from string to result in C

Evaluate a simple string mathmatical expression

Convert string to mathematical evaluation

etc etc.

Es gibt zwei Möglichkeiten, darüber zu gehen, ist Ihre eigenen schreiben, der zweite ist eine Bibliothek, die wie das, was scheint du schaust nach. Ich weiß nichts dergleichen in den C++ - Standardbibliotheken, in Ruby und einer Reihe anderer Sprachen, Sie können die Zeichenfolge einfach auswerten, aber in C++ müssen Sie wahrscheinlich eine Bibliothek aus dem Internet ausleihen oder so. Versuche den letzten Link, es sah vielversprechend aus.

+16

Danke ... Ich habe nicht daran gedacht, den Printf und den Evaluierungsteil zu trennen ... das macht es tatsächlich viel einfacher. Folgendes sieht gut aus und es sollte funktionieren: http://www.partow.net/programming/exprtk/index.html – Hhut

Verwandte Themen