-2

このフォーラムで同様の質問を見たことがありますが、まだ少し混乱しています....次のような文字列をどのように変換できますか:

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

intに格納できる単純な数学演算に変換しますか? (最も効率的なソリューションを探しています)。

Ps。次のライブラリのみを使用できます。

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

誰か助けてくれませんか?

4

2 に答える 2

2

eval他の言語の型関数のように、これを行うために C++ に組み込まれている機能はありません。面倒な作業はすべて自分で行う必要があります。

これには以下が含まれます。

  1. 文字列を解析し、個々のトークンに分割します。ここでのいくつかのトークンは次のようになります: 5+4など...
  2. 解析されたトークンを演算子およびオペランドとして解釈します。演算子は+-などで、オペランドは5などです4
  3. どういうわけか、各オペランドに対してコードのブロックを実行し、結果を蓄積します。これには、サポートする演算子ごとに 1 つの条件を指定して、どこかに大きなブロックswitchまたはブロックが含まれる可能性があります。if-elseテンプレートや継承をどうにかして工夫することもできますが、私は最初は単純にしておくことを好みます。
于 2013-11-06T16:33:51.193 に答える