【问题标题】:Is there anyway to run a string as a function in C++无论如何在C ++中将字符串作为函数运行
【发布时间】:2015-11-10 21:25:48
【问题描述】:

我有一个函数库,当用户输入给定字符串时(即运行 x(其中 x 是程序)。)程序运行函数。

完整示例: 用户输入:“运行 chrome”

程序执行:运行(Chrome) 我已经搜索过答案,但我的谷歌搜索技能似乎达不到标准。

【问题讨论】:

  • 不清楚是要运行函数还是程序。
  • C++ 没有这样的东西,但你的操作系统可能有。使用 Unix、Windows 还是其他?
  • 解析它并将其与与函数关联的关键字(std::mapstd::unordered_map)进行比较?
  • 另一个例子是一个名为 Add(x,y) 的函数。如果我有一个充满数学函数的库(即除法、减法、乘法等),那么用户输入他想要的内容然后再次询问数字将是低效的。所以在我的情况下,我希望用户输入:“添加 5 和 9”。所以程序然后获取“Add”字符串,然后运行 ​​5+9。

标签: c++


【解决方案1】:

不,这在 C++ 中是无法直接实现的。

C++ 不包含编译器作为语言的一部分。 Lisp 和 Java 等都可以,使用这些语言,这样的自编译程序是可能的。

使用 C++,您必须将用户输入转换为合适的源代码、调用编译器、运行程序并读取其输出。

【讨论】:

  • 非常感谢您,您会进一步建议我切换到任何一种语言吗?或继续使用 C++ 并比较运行用户输入
  • 视情况而定。如果只有几个函数,那么 cmets 中建议的映射会更容易。如果你不信任用户,编译和运行他的代码也不是一个好主意。关于切换:调用编译器应该不是很困难,所以我看不出切换有很大的优势。 Lisp 是完全不同的东西。
【解决方案2】:

我认为最好的办法是使用 if 语句。除非你有很多功能,否则应该足够了。

if (input == "function1"){
  =function1;
}
else if (input == "function2"){
  function2;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 2023-03-27
    • 1970-01-01
    • 2012-07-12
    相关资源
    最近更新 更多