C++ 使用输入字符串作为函数名c++;

C++ 使用输入字符串作为函数名c++;,c++,notepad++,C++,Notepad++,第一次发帖,所以要温柔。我开始教自己C++,因为我一直都感兴趣,而且将来对工作也有用。 好的,我已经写了一个非常基本的程序,可以根据用户的输入进行加、减、乘或除 我的问题是,我可以使用用户的输入作为字符串,并使用它来调用函数吗 见下面的代码:- #include <iostream> #include <string> using namespace std; // Addition Function int Add (int a, int b) { int r; /

第一次发帖,所以要温柔。我开始教自己C++,因为我一直都感兴趣,而且将来对工作也有用。 好的,我已经写了一个非常基本的程序,可以根据用户的输入进行加、减、乘或除

我的问题是,我可以使用用户的输入作为字符串,并使用它来调用函数吗

见下面的代码:-

#include <iostream>
#include <string>

using namespace std;

// Addition Function
int Add (int a, int b)
{
int r; //Result
r=a+b; //formula
return r; //return result of formula
}

// Subtraction Function
int Subtract (int a, int b)
{
int r; //Result
r=a-b; //formula
return r; //return result of formula
}

// Multiply Function
int Multiply (int a, int b)
{
int r; //Result
r=a*b; //formula
return r; //return result of formula
}

// Divide Function
int Divide (int a, int b)
{
int r; //Result
r=a/b; //formula
return r; //return result of formula
}

// Main
int main()
{
int ip1, ip2, z;
string option;


cout << "Enter first number: ";
cin >> ip1;
cout << "Enter second number: ";
cin >> ip2;
cout << "What would you like to do?, Please type an option (Options: Add, Subtract, Multiply, Divide)\n";
getline(cin,option);
z = option (ip1,ip2);
cout << "The result is " << z;
}
#包括
#包括
使用名称空间std;
//加法函数
整数相加(整数a,整数b)
{
int r;//结果
r=a+b;//公式
return r;//返回公式的结果
}
//减法函数
整数减法(整数a,整数b)
{
int r;//结果
r=a-b;//公式
return r;//返回公式的结果
}
//乘函数
整数乘法(整数a,整数b)
{
int r;//结果
r=a*b;//公式
return r;//返回公式的结果
}
//除函数
整数除法(整数a,整数b)
{
int r;//结果
r=a/b;//公式
return r;//返回公式的结果
}
//主要
int main()
{
int ip1,ip2,z;
字符串选项;
cout>ip1;
cout>ip2;

cout您可以使用非常简单的
if
条件树:

     if (option == "Add")         z = Add(ip1, ip2);
else if (option == "Subtract")    z = Subtract(ip1, ip2);
else if (option == "Multiply")    z = Multiply(ip1, ip2);
else if (option == "Divide")      z = Divide(ip1, ip2);
或者,您可以使用
std::map
std::string
映射到相应的函数指针。它可能更干净,但肯定更长:

std::map<std::string, std::function<int(int, int)>> mapping;
mapping["Add"]      = &Add;
mapping["Subtract"] = &Subtract;
mapping["Multiply"] = &Multiply;
mapping["Divide"]   = &Divide;

if (mapping.find(option) == mapping.end())
    // there's no such an option
z = mapping[option](ip1, ip2);

另一方面,请注意,您可以在函数声明中删除大量代码行和临时变量:

int Add (int a, int b)      { return a + b; }
int Subtract (int a, int b) { return a - b; }
int Multiply (int a, int b) { return a * b; }
int Divide (int a, int b)   { return a / b; }

您可以使用
std::map
,然后只需执行
z=myMap[option](ip1,ip2);
我想您的意思是
std::function
。不要将其称为map:PThanks谢谢您的帮助。最后我使用了If语句,因为它还允许我使用If和else等。。。
int Add (int a, int b)      { return a + b; }
int Subtract (int a, int b) { return a - b; }
int Multiply (int a, int b) { return a * b; }
int Divide (int a, int b)   { return a / b; }