You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何根据用户输入的字符串调用对应函数?

在C++中根据字符串调用对应函数的实现方法

C++本身不支持直接通过用户输入的字符串调用函数——你示例里的func_name()写法是无效的,因为字符串对象无法直接被解析为函数标识符。不过可以通过函数指针映射表轻松实现这个需求,具体步骤如下:

核心思路

用哈希表(比如std::unordered_map)存储字符串与对应函数指针的关联关系,读取用户输入后,在表中查找匹配项,找到则调用对应的函数。

完整实现代码

#include <iostream>
#include <string>
#include <unordered_map>

void hello()
{
    std::cout << "print hello\n";
}

void hello_world()
{
    std::cout << "print hello_world\n";
}

int main()
{
    // 定义统一的函数指针类型(适配所有目标函数的签名)
    using FuncPtr = void(*)();
    
    // 构建字符串到函数的映射
    std::unordered_map<std::string, FuncPtr> funcMap = {
        {"Hello", hello},
        {"Hello_world", hello_world}
    };

    std::string func_name;
    std::cout << "enter the function you would like to call: \n 1.Hello \n 2.Hello_world\n";
    std::cin >> func_name;

    // 查找并执行函数
    auto funcIter = funcMap.find(func_name);
    if (funcIter != funcMap.end()) {
        funcIter->second(); // 调用匹配到的函数
    } else {
        std::cout << "Error: Function '" << func_name << "' is not defined.\n";
    }

    return 0;
}

扩展说明

  • 如果目标函数的签名不同(比如带参数、有返回值),可以用std::variant存储不同类型的函数指针,或者通过抽象基类+多态的方式封装函数调用逻辑。
  • 可以统一输入字符串的大小写(比如转为小写后再查找),避免因大小写不匹配导致的调用失败。

内容的提问来源于stack exchange,提问作者user19899551

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 14:45:07