2016-05-03 4 views
-1

私は文字列var x = 2 + 3を持っていると言う。私はeval()を使ってjavasriptで式に変換できます。文字列をevalと同じ実行可能なC++式に変換する方法はありますか(組み込み関数を使うか、コードをカスタマイズする)?私がやるべきことは、1つの可変線形方程式の結果を見つけようとすることです。私はこのコードをC++フォーラムで見つけましたStringを実行可能なC++式に変換する方法はありますか?

#include <iostream> 

struct VAR{ 
    float i; 
}; 

struct LINE{//k*x+a 
    float a, k; 
    VAR* x; 

    LINE(){} 
    LINE(int a) : a(a), k(0), x(0) {} 
    LINE(VAR& v) : a(0), k(1), x(&v) {} 
}; 

LINE operator + (LINE A, LINE B){//assumes that A.x == 0 or B.x == 0 or A.x == B.x 
    LINE R; 
    R.a = A.a + B.a; 
    R.k = A.k + B.k; 
    if(A.x) R.x = A.x; 
    else R.x = B.x; 
    return R; 
} 

LINE operator - (LINE A, LINE B){//same as + 
    LINE R; 
    R.a = A.a - B.a; 
    R.k = A.k - B.k; 
    if(A.x) R.x = A.x; 
    else R.x = B.x; 
    return R; 
} 

LINE operator * (LINE A, LINE B){//assumes that A.x == 0 or B.x == 0 
    LINE R; 
    R.a = A.a * B.a; 
    R.k = A.k * B.a + B.k * A.a; 
    if(A.x) R.x = A.x; 
    else R.x = B.x; 
    return R; 
} 

LINE operator/(LINE A, LINE B){//assumes that B.x == 0 
    LINE R; 
    R.a = A.a/B.a; 
    R.k = A.k/B.a; 
    R.x = A.x; 
    return R; 
} 

void operator == (LINE A, LINE B){ 
    LINE C = A - B; 
    C.x->i = -C.a/C.k; 
} 

int main(){ 
    VAR x; 
    5 == (2 + (x-7)*10)/2; 

    std::cout << "x = " << x.i; 
    std::cin.get(); 

    return 0; 
} 

その作業は問題ありません。今私がしたいのは、この "5 ==(2 +(x-7)* 10)/ 2;を実行することです。 C++のevalとしてのステートメント

編集1:問題が解決さ:)

+0

ヘッダ&フッタの適切な関数で 'hoge.cpp'に保存しますか? – MikeCAT

+2

eval( "function(arg1、arg2)")のC/C++に相当するものがありますか?](http://stackoverflow.com/questions/11078267/is-there-cc-equivalent-of-evalfunctionarg1- arg2) – computerfreaker

+0

"私が何を意味するか"の機能はまだ発明されていません。 – Art

答えて

0

ああ、ヨアヒムが指摘したように、C++は静的にコンパイル言語ではなく、Javaの、Pythonの、のような解釈または動的にコンパイル言語である...ある、あなたのすべてをありがとう。したがって、標準のC++にはこのような関数はありません。eval()

しかし、Embedded Chは、そのようなeval()の機能を提供する組み込み可能なC++インタプリタです。しかし、それはフリーソフトウェアではありません。

関連する問題