如何从用户输入创建功能?

时间:2011-07-31 12:42:15

标签: c++ arrays function

所以我需要在我的程序中使用两个数组。 A是数据点的数组(值x取)。 B是x的函数数组。 两者都由用户输入(来自键盘)。

我的问题在于读取B的元素。例如,A = {1,2,3}和B = {sin(x),x + 5}其中x应该包含A的所有值。 我对c ++比较陌生,并不确定最好的方法。我读过有关解析的内容,但看起来有点复杂。 它可以在没有解析的情况下完成吗?

2 个答案:

答案 0 :(得分:2)

不,这 很复杂。 C ++是一种静态类型和非反射语言:无法在运行时创建实际的C ++代码

下一个要做的最好的事情是编写一个小的解析器,将输入与您选择提供的已识别函数列表进行匹配。这不是 很难做到,但你需要编写一些代码。

Boost包含一些库来帮助你解决这个问题(Spirit),我相信,但手动操作并不是非常困难。你只需要将输入值放入标记并构建一个解析树。

答案 1 :(得分:1)

最好的办法是使用函数解析器库,例如FunctionParser。其他选项包括使用脚本语言,例如LuaSquirrel,以及使用单独的命令行计算器应用程序。

解析是一个庞大且令人兴奋的领域,但是编写自己的解析器可能需要更长的时间,除非你专门为了熟悉这个主题而开展这个项目。