C++ 使用输入字符串作为函数名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; /
#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; }