【问题标题】:How to execute something written in string in C++?如何在 C++ 中执行用字符串编写的东西?
【发布时间】:2020-10-01 20:13:57
【问题描述】:

在 Python 中我有这样的机会,用一些东西写一个名为 s 的字符串,然后用 exec() 函数执行这个字符串中的代码:

s = input()   # Something like 5*x**2-6
exec('def f(x):\n    return ' + s)
print(f(5))

如何在 C++ 中做类似的事情? 在我的程序中,用户应该输入一些函数,线段并从该段中获取 x,其中 f(x) = 0。我完成了所有工作,但求解方程的函数 f(x) 只能是源代码里改了,当然不是很合适。

提前致谢!

【问题讨论】:

  • 你所问的在 C++ 中根本不可能。代码需要预先编译,而 Python 是一种解释性语言。现在,如果您的问题是“我如何评估包含数学表达式的字符串”,那完全是另外一回事。
  • 您必须编写一些评估函数来评估数学表达式。或者找一些为你做的图书馆。
  • 这能回答你的问题吗? How to evaluate any given expression
  • 您是否应该编写一个完整的 C++ 编译器?这是什么任务?

标签: c++ exec


【解决方案1】:

将输入保留为字符串,然后使用 string::replace 方法将 x 替换为数字,然后像此人一样评估表达式:Evaluating arithmetic expressions from string in C++

我认为这可行。

【讨论】:

  • 好发现!当然,如果您已经对表达式进行了标记,则很容易将非数字原子映射到 std::map<std::string, double> 中的变量。
【解决方案2】:

在别处定义你的函数:int f(num){... return x}(其中 x 必须是 int,因为我们将函数定义为整数),在你得到输入 print 之后输出 f(输入)。详细了解 C++ 函数here

【讨论】:

    猜你喜欢
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多