В ExprTk readme.txt: Раздел 23 - Помощники и утилиты имеет следующую бесплатную функцию помощника: 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.");
Примечание: Если выражение по какой-либо причине недопустимо collect_variables вернет false.