- 主题:碰到一个难题了字符串转表达式
- 我也是这么想的,不知道这个fork编译执行的效率如何。
 
 目前三种值得一试:
 1. 内嵌python,后续需要频繁在c++和python之间传递参数,效率?
 2. 自己写表达式分析程序
 3. 你这种方法,每次编译成一个动态库,动态加载执行,效率?
 
 【 在 e729 的大作中提到: 】
 : 把这个表达式写到一个.c文件中,fork新的进城编译执行它,取得结果。
 : 以上是十数年前,本老某个学期面对的最后一道C大作业题受挫时,给自己预备的的最后一招
 :
 --
 FROM 114.249.195.*
 
- 效率是最不需要担心的了吧
 这个方法只是个设想,我并没有用过,其中有个bug也是刚刚发现:子进程调用gcc编译后,如果成功,就不能再次调用execl执行。流程应该是当父进程发觉子进程返回成功后,调用execl执行
 这是一个看似很黑客实际是一个投机取巧的方法,只有在黔驴技穷时才应该使用。你还是百度一下算法吧,一堆一堆的
 
 【 在 anything1999 的大作中提到: 】
 : 我也是这么想的,不知道这个fork编译执行的效率如何。
 : 目前三种值得一试:
 : 1. 内嵌python,后续需要频繁在c++和python之间传递参数,效率?
 : ...................
 --
 FROM 119.114.248.*
 
- 你这个方法的问题是:需不需要安装python?
 【 在 vwx 的大作中提到: 】
 : 内嵌python
 --
 FROM 114.249.195.*
 
- 你这个方法比较硬核:)
 【 在 yytree 的大作中提到: 】
 : 看看C实现的basic源码
 : 解释执行
 : 看看怎么计算表达式的
 : ...................
 --
 FROM 114.249.195.*
 
- 看了一下介绍,正是我想要的!!
 
 【 在 meizhi 的大作中提到: 】
 : exprtk很香
 : 发自「今日水木 on 22041216C」
 --
 FROM 114.249.195.*
 
- exprtk不错。
 
 【 在 dormouseBHU 的大作中提到: 】
 : 这样的库很多吧, 比如  muParser 、exprtk、GNU libmatheval
 : 或者程序里嵌入个脚本解释器,python 、 perl 一类的。这也是很常见的操作。
 :
 --
 FROM 114.249.195.*
 
- 根本方法还是自己写个逆波兰式, 这个很简单
 
 github上应该有现成代码
 
 当然用现成的库还是最容易的,比如前面提到的exprtk
 
 【 在 anything1999 的大作中提到: 】
 : 程序里面有lambda表达式,这个表达式诸如y=3+x, 其中这个3+x部分想让用户输入,用户也可以输入3*x等,然后把用户输入的字符串转为表达式,以便后续计算,之前c#有第三方库,python之类的也有eval函数(这个可能还不太一样,我不需要立即求值),c++没有找到类似的功能或者库。
 : 各位有什么思路
 --
 FROM 101.86.20.*
 
- 借用下sqlite的库就行了
 
 【 在 anything1999 的大作中提到: 】
 :
 : 程序里面有lambda表达式,这个表达式诸如y=3+x, 其中这个3+x部分想让用户输入,用户也可以输入3*x等,然后把用户输入的字符串转为表达式,以便后续计算,之前c#有第三方库,python之类的也有eval函数(这个可能还不太一样,我不需要立即求值),c++没有找到类似的功能或者库。
 : 各位有什么思路
 --
 FROM 111.9.14.*
 
- 典型的第三方库不就是yacc这种?
 【 在 anything1999 的大作中提到: 】
 : 程序里面有lambda表达式,这个表达式诸如y=3+x, 其中这个3+x部分想让用户输入,用户也可以输入3*x等,然后把用户输入的字符串转为表达式,以便后续计算,之前c#有第三方库,python之类的也有eval函数(这个可能还不太一样,我不需要立即求值),c++没有找到类似的功能或者库。
 : 各位有什么思路
 : --
 : ...................
 --
 FROM 114.242.248.*
 
- 直接调用python
 【 在 anything1999 的大作中提到: 】
 : 程序里面有lambda表达式,这个表达式诸如y=3+x, 其中这个3+x部分想让用户输入,用户也可以输入3*x等,然后把用户输入的字符串转为表达式,以便后续计算,之前c#有第三方库,python之类的也有eval函数(这个可能还不太一样,我不需要立即求值),c++没有找到类似的功能或者库。
 : 各位有什么思路
 --
 FROM 182.118.236.*