接受字符串来调用函数
accept strings to call functions
在我开始之前,我知道这个问题对你来说可能很荒谬,但请耐心等待我。
void hello()
{
cout<<"used as a greeting or to begin a telephone conversation.";
}
void main()
{
#define a b()
char b[]="hello";
a;
}
因此,在上面的代码中,例如有一些函数集,如hello(几乎有数千个)和i希望用户输入一个字符串(字符数组),然后程序使用它来调用已经创建或定义的函数。就像上面的例子一样,hello是由用户输入的,然后程序必须从那里调用函数。
我知道这个程序不对,但是请耐心听我说。如果你的问题不够清楚,请留下评论,我会尽快回复你。
您可以使用std::function
和std::map
将字符串映射到函数:
std::map<std::string, std::function<void()>> map;
map["hello"] = hello;
现场演示
然后通过std::map::find
搜索用户在map
中输入的内容。
以下内容可能有所帮助:
#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;
}
相关文章:
- 如何用参数值调用函数(仅在运行时已知)
- 从python中调用C++函数并获取返回值
- 当使用通配符和null指针调用函数时,对输出的说明
- 从R调用C++函数并对其进行集成时出错
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 如何在qt中从另一个类调用函数
- 在 COUT 语句中使用 COUT 调用函数
- 如何从线程中的不同模块调用函数?
- C++从函数指针数组调用函数
- 当 A 在 for 循环中调用函数 B 时,如何计算函数 A 的空间复杂度?
- 如何在 C/C++ 中从外部库调用函数
- 如何使用运算符在同一行中多次调用函数
- 是否可以创建一个从不同类调用函数的线程?
- 无法为类成员调用函数
- 如何从另一个标头 c++ 调用函数
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- 如何只允许在调用函数 B 后调用函数 A?
- 我可以这样调用函数吗?
- 如何在 c++ 的类中递归调用函数方法?
- 为什么在指向对象的迭代器上调用函数不允许我更改对象本身?