gpt4 book ai didi

javascript - 有没有办法将 String 转换为可执行的 C++ 表达式?

转载 作者:行者123 更新时间:2023-11-30 19:39:04 28 4
gpt4 key购买 nike

假设我有一个字符串 var x = 2 + 3 ;我可以使用 eval() 将其转换为 javasript 中的表达式;有没有办法将字符串转换为与 eval 相同的可执行 C++ 表达式(使用内置函数或自定义代码)?我的意思是尝试找出一变量线性方程的结果。我在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:谢谢大家,问题已经解决了:)

最佳答案

唉,正如 Joachim 指出的那样,C++ 是一种静态编译语言,而不是像 Java、Python 等那样的解释型或动态编译语言。因此,标准 C++ 中不存在这样的函数 eval()

但是,您可能对 Embedded Ch 感兴趣,一个嵌入式 C++ 解释器,提供此类 eval() 函数等。但它不是免费软件。

关于javascript - 有没有办法将 String 转换为可执行的 C++ 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36996909/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com