将字符串转换为操作C ++

时间:2013-11-06 16:26:37

标签: c++ string

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

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

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

聚苯乙烯。我只能使用以下库:

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

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:3)

这将对您有所帮助:

Algorithms for Parsing Arithmetic Expressions

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

您还可以查看this question的答案 - 似乎涵盖了您的要求。

答案 1 :(得分:2)

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

这将涉及:

  1. 解析字符串,将其分解为单个令牌。这里的一些令牌可能是:5+4等......
  2. 将解析的标记作为运算符和操作数进行解释。运算符为+-等,操作数为54等。
  3. 以某种方式为每个操作数执行代码块并累积结果。这可能涉及某个地方的大switchif-else块,每个运营商支持一个条件。您可能也会尝试以某种方式使用模板或继承,但我更倾向于保持简单开头。