【问题标题】:Are there any functions in the C++ library that converts a string into an arithmetic operation?C++ 库中是否有将字符串转换为算术运算的函数?
【发布时间】:2019-05-16 10:30:15
【问题描述】:

我知道 stoi() 函数可能只适合整数值的需要,但是我需要将以下字符串转换为实际的算术运算。例如:

"3 + 7 * 4 - 2" 转为3 + 7 * 4 - 2

如果我必须将其分配给变量,结果将是 29。

【问题讨论】:

  • 没有。但是有很多库可以处理简单的代数问题。
  • 你需要解析你的字符串然后评估它
  • 否,标准库中不支持解析算术表达式。您可以尝试实现 Shunting-yard-algorithm,或搜索解析算术表达式的库
  • 可以使用 Lua、Python、JavaScript 或 R 等解释型语言来解析这种类型的表达式。特别是 Lua 应该很容易集成到 C 项目中。

标签: c++ string type-conversion int


【解决方案1】:

简而言之:没有。

如何处理这个问题实际上取决于字符串最初是如何创建的。 这是某个用户在标准输入上提供了一些简单的输入,而您使用 std::cin 捕捉到了吗?

如果它真的是一个简单的表达式(没有括号等),您可以从 stdin 读取一个 int、一个 char、一个 int、一个 char、一个 int 等......然后将 char 解析为运算符。

当我遇到类似问题时,我遇到了Shunting-Yard Algorithm,这似乎正是我想要的。

您还可以实现一些语法。当它起作用时真的很有价值,但这是很多工作和过度杀伤力。见parsing math expression in c++。通过代码示例,您将拥有比我的更好的 cmets。

【讨论】:

    猜你喜欢
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2019-02-04
    • 1970-01-01
    • 2011-10-28
    相关资源
    最近更新 更多