2016-08-28 4 views
1

入力を文字列として取り、C++で各文字をchar、intまたはfloatとして識別する方法は?入力を文字列として取り込み、各文字をchar、intまたはfloatとして識別する方法は?

例:ユーザに単純な3+2 = statementを入力させたい場合は、減算を追加するか、他の算術演算を行うかをプログラムが決定し、それに応じて適切な答えを出力します。

+0

文字列内の各文字をループし、操作の場所(この場合は+)を特定できます。操作位置を知ったら、文字列の先頭から各文字を第1オペランドとして、操作の各文字を第2オペランドとして文字列の最後まで取ります。 'atof'を使って文字列をdouble型に変換し、次にオペランドで算術演算を行うことができます。操作文字を識別し、適切な操作を行うには、 'if'文を使用します。 – Swemoph

+0

それはすべてトークン化についてです。 Googleは大きな助けになるだろう –

+1

これを行うには、以下の例を参考にしてください:https://github.com/djowel/spirit_x3/blob/master/example/x3/calc5.cpp – Roby

答えて

1

std::string.substr(...)またはstd::regexで入力文字列をトークン化できます。 トークン化したら、構文が正しいことを確認する必要があります。 その後、構文を実行してください。

ここでは、あなたの言語を定義することができます方法は次のとおりです。

  • セパレーター= ''
  • 演算子= '+'、 ' - '、 '*'、 '/'
  • 整数= \ dの+
  • Float = \ d *。\ d +
関連する問題