2011-07-26 5 views
3

私は代入文インタープリタのプログラムをC++で書く必要があります。プログラムを実装するには、数値、単語、演算子(=、+、 - 、*、/)からなる入力をトークン化する必要があります。 javaのストリームTokenizerを使用してトークン化し、入力を解析します。1.次のトークンに行くような制御が必要です。2.現在のトークンのタイプ(数またはワード).like関数nexttoken()およびttype()nval()sval java内のpushback()私を助けてください。javaのstreamtokenizerの代わりにC++でどのクラスを使用できますか?

+0

RegExpを試しましたか? – Bitmap

+0

いいえ。それは何ですか? – user864408

+0

正規表現。 – Bitmap

答えて

2

Boost::Tokenizerは、C++用の多用途のトークナイザであり、あなたのケースを簡単に処理するはずです。

+0

私はそれを見ました。しかし、 – user864408

+1

@ user864408のnextToken()とttype()のようなメソッドを見つけることができません。これはC++で書かれています。 Javaと同じ規則を使用するつもりはありません。イテレータはイテレータを使用しています。イテレータは、C++を長時間使用する場合に理解しなければならない概念です。 –

+2

C++イテレータに精通していますか? Boost :: tokenizerは、nextToken()のような関数ではなく、それらに基づいて動作します。ドキュメントには、トークンを抽出するためにそれらを使用する方法の良い例があります。型関数はありませんが、各型のstd :: vectorsを作成し、std :: findを使用してそれらのうちの1つであるかどうかを調べることができます。例:C++ 0x、 'std :: vector ops = {" = "、" + "、" - "、" * "、"/"}; std :: find(ops.begin()、ops.end()、tok)!= ops.end(); "tok"が演算子の場合はtrueを返します。 – Sean

関連する問題