使用函数中文件的字符串

MOO*_*OON 3 c++ casting

我在c ++中有这个功能

double f_x(double y , string sfy )
{
  return sfy;
}
Run Code Online (Sandbox Code Playgroud)
  1. 我想从文件中读取字符串sfy并将其传递给f_x函数.
  2. sfy包含y或cos(y)或exp(y)之类的东西.
  3. 当我将y和sfy传递给f_x时,我希望f_x计算sfy并返回它.

我可以做第1和第3,但问题是f_x的类型是double,sfy是字符串,所以我得到错误.

我无法将f_x的类型更改为其他任何应该为double或float的内容.

我怎样才能克服这个问题,即我应该怎么做才能使f_x返回sfy为double.

jro*_*rok 6

也许是这样的事情:

#include <map>
#include <string>
#include <fstream>
#include <iostream>
#include <cmath>

std::map<std::string, double(*)(double)> m;

double f_x(double y , std::string sfy )
{
    if (m.find(sfy) == m.end()) throw "Invalid operation.";
    return m[sfy](y);
}

int main()
{
    m["exp"] = std::exp;
    m["cos"] = std::cos;
    m["sin"] = std::sin;

    std::ifstream file("test.txt");
    std::string op;
    std::getline(file, op);

    std::cout << f_x(42.0, op);
}
Run Code Online (Sandbox Code Playgroud)