C++ 从文件(C+;+;)读取函数(和“创建”)

C++ 从文件(C+;+;)读取函数(和“创建”),c++,code-generation,C++,Code Generation,我想知道是否可能,例如,读取包含以下内容的文件: a+b*c 我的程序“创建”了一个函数来执行这个操作,如果我修改了这个文件(比如a+b*c+2),程序读取这个函数会改变并更新这个函数的功能。嗯,我没有一个坚实的背景,在C++基础上,我不知道我问的只是简单的愚蠢。我需要(或者类似的东西可能很好)来完成我在物理模拟方面的工作,模型主要由一个平衡函数(和一些其他参数)来定义,所以我认为如果我可以制作一个程序来测试这个模型,而不必为每个模型编写特殊的代码,这可能会很好 谢谢 C++不是解释代码。因此,

我想知道是否可能,例如,读取包含以下内容的文件:

a+b*c

我的程序“创建”了一个函数来执行这个操作,如果我修改了这个文件(比如a+b*c+2),程序读取这个函数会改变并更新这个函数的功能。嗯,我没有一个坚实的背景,在C++基础上,我不知道我问的只是简单的愚蠢。我需要(或者类似的东西可能很好)来完成我在物理模拟方面的工作,模型主要由一个平衡函数(和一些其他参数)来定义,所以我认为如果我可以制作一个程序来测试这个模型,而不必为每个模型编写特殊的代码,这可能会很好


谢谢

C++不是解释代码。因此,您只能在源代码中编译硬编码表达式。但是,您可以自行计算表达式。您可以查看一些解决方案

C++不是解释代码。因此,您只能在源代码中编译硬编码表达式。但是,您可以自行计算表达式。您可以查看一些解决方案

以确定它是“可能的”,实际上这就是matlab、mapple或任何其他正式计算软件/lib所做的。 顺便说一句,如果您只处理*/+-basic运算符,编写一个可能会非常简单,并且可能会变得越来越复杂,这取决于您想要使用什么(sincos、exp、log等)

基本实现读取输入并构建一个内部树,在叶子上包含最终值,在您的情况下,类似于这样:

  +
a   *
   b  c
我相信你可以在上面找到很多文档。

当然这是“可能的”,实际上这就是matlab、mapple或任何其他正式计算软件/lib所做的。 顺便说一句,如果您只处理*/+-basic运算符,编写一个可能会非常简单,并且可能会变得越来越复杂,这取决于您想要使用什么(sincos、exp、log等)

基本实现读取输入并构建一个内部树,在叶子上包含最终值,在您的情况下,类似于这样:

  +
a   *
   b  c


我相信你可以在上面找到很多文档。

你想创建一个函数
foo(a,b,c)
,你可以在你的代码中调用它,来评估文件中的表达式吗?不,这不可能以简单的方式实现。您必须实现解析器和解释器,或者依赖于C++编译器,立即创建共享库,并加载它来执行语句。analyzer@AbdulRehman是的,像这样的。。。但是我缺乏信息,我不知道从哪里开始研究这种想法。你有什么参考书目可以推荐给我吗?@RolandDeschain这里有一个很好的解释和你需要的有用链接。你想创建一个函数
foo(a,b,c)
,你可以在你的代码中调用它,来评估文件中的表达式吗?不,这不可能以简单的方式实现。您必须实现解析器和解释器,或者依赖于C++编译器,立即创建共享库,并加载它来执行语句。analyzer@AbdulRehman是的,像这样的。。。但是我缺乏信息,我不知道从哪里开始研究这种想法。你有什么参考书目可以推荐给我吗?@RolandDeschain这里有一个很好的解释和你需要的有用链接。投票反对的人能解释原因吗?我没有投票反对。但你的回答更像是一个评论。此外,这个问题相当广泛,因此完全可以说是关于这个主题的。它提供了一个带有链接的解决方案。你怎么说这是一个评论?这里只提供链接的答案是不受欢迎的。至少在你的答案中加入要点。@user1969104:如果链接回答了这个问题,你可能应该将这个问题标记为重复问题。否决这个问题的人能解释原因吗?嗯,我没有否决。但你的回答更像是一个评论。此外,这个问题相当广泛,因此完全可以说是关于这个主题的。它提供了一个带有链接的解决方案。你怎么说这是一个评论?这里只提供链接的答案是不受欢迎的。至少在你的答案中加入要点。@user1969104:如果链接回答了问题,你可能应该将此问题标记为重复。嗨!谢谢你的回答,你能给我推荐一些关于这个主题的书或文件吗@OznOgHi!谢谢你的回答,你能给我推荐一些关于这个主题的书或文件吗@奥兹诺