ExprTk,获取表达式中的符号/变量列表

goa*_*ran 4 c++ exprtk

我想从 ExprTk 中的表达式中获取符号列表(不是我注册的符号,而是表达式中的符号。例如,当表达式为

const std::string expression_string = "abs(sin(x)^2+5*y)";
Run Code Online (Sandbox Code Playgroud)

我需要将 x 和 y 作为列表/向量或其他内容的结果。我怎样才能做到这一点?

Exp*_*per 6

在 ExprTk readme.txt 中:第 23 节 - Helpers & Utils有以下 helper free 函数:collect_variables

用法如下:

  const std::string expression_string = "abs(sin(x)^2+5*y)";

  std::vector<std::string> variable_list;

  if (exprtk::collect_variables(expression_string, variable_list))
  {
     for (const auto& var : variable_list)
     {
        ...
     }
  }
  else
    printf("An error occurred.");
Run Code Online (Sandbox Code Playgroud)

注意:如果表达式因任何原因无效,collect_variables将返回 false。