在我开始之前,我知道这个问题对你来说可能是荒谬的,但只是忍受我这个问题
void hello()
{
cout<<"used as a greeting or to begin a telephone conversation.";
}
void main()
{
#define a b()
char b[]="hello";
a;
}
所以在上面的代码中举例说,有一些函数像hello(几乎成千上万),我希望用户输入一个字符串(字符数组)然后程序用来调用一个函数已经制定或定义。 就像上面的例子一样,用户输入了hello,然后程序必须从那里调用函数。
我知道这个程序不对,但只是忍受我。 如果问题不够明确,请留下评论,我会尽快回复。
答案 0 :(得分:2)
您可以使用std::function
和std::map
将字符串映射到函数:
std::map<std::string, std::function<void()>> map;
map["hello"] = hello;
然后您通过map
搜索用户在std::map::find
中输入的内容。
答案 1 :(得分:1)
以下可能会有所帮助:
#include <iostream>
#include <map>
#include <string>
#include <functional>
void hello_world() { std::cout << "hello world" << std::endl; }
void question() { std::cout << "The answer is 42" << std::endl; }
int main()
{
bool finish = false;
std::map<std::string, std::function<void()>> m = {
{"hello", hello_world},
{"question", question},
{"exit", [&finish](){ finish = true; }},
};
while (!finish) {
std::string input;
std::cin >> input;
auto it = m.find(input);
if (it == m.end()) {
std::cout << "the known input are" << std::endl;
for (auto it : m) {
std::cout << it.first << std::endl;
}
} else {
it->second();
}
}
return 0;
}