-2

我在这个论坛上看到过类似的问题,但我还是有点困惑......我怎样才能把一个看起来像这样的字符串:

          MyString = "5+4-3*2";

变成一个可以存储到 int 中的简单数学运算?(寻找最有效的解决方案)。

附言。我只能使用以下库:

    <cstdio>,<vector>,<cstring>,<string>,<cmath>

有人能帮帮我吗?

4

2 回答 2

3

这将帮助您:

解析算术表达式的算法

它在 C 中,但您可以将其转换为 C++ 作为额外的练习 :)

您还可以查看这个问题的答案 - 似乎涵盖了您所问的内容。

于 2013-11-06T16:39:14.357 回答
2

C++ 没有内置功能可以做到这一点,就像eval其他语言中的类型函数一样。您需要自己完成所有繁重的工作。

这将涉及:

  1. 解析字符串,将其分解为单个标记。这里的一些标记是: 5, +, 4, 等等...
  2. 将解析的标记解释为运算符和操作数。运算符是+,-等,操作数是5,4等等。
  3. 以某种方式为每个操作数执行一段代码并累积结果。这可能会涉及某个地方的大块switchif-else块,您支持的每个运营商都有一个条件。您也可以尝试以某种方式使用模板或继承,但我更愿意一开始就保持简单。
于 2013-11-06T16:33:51.193 回答