3

我在 C++ 中有这个功能

double f_x(double y , string sfy )
{
  return sfy;
}
  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 作为双倍。

4

1 回答 1

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);
}
于 2012-08-19T13:01:29.237 回答