2011-07-26 22 views
3

我需要爲C++編寫一個賦值語句解釋器的程序。我在java.I中實現了程序,需要對包含數字,字和運算符(=,+, - ,*,/)的輸入進行標記。在java中使用流Tokenizer來標記和解析輸入。我需要像1.control這樣的函數轉到當前標記(數字或單詞)的下一個標記2.type函數nexttoken()和ttype()nval()sval ()在java中pushback()。請幫我解決這個問題。哪些類可以在C++中用於替換java中的streamtokenizer?

+0

您是否試過RegExp? – Bitmap

+0

不......那是什麼? – user864408

+0

正則表達式。 – Bitmap

回答

2

Boost::Tokenizer是一個非常多功能的C++標記器,應該很容易處理你的情況。

+0

我看到了..但我找不到像nextToken()和ttype()那樣的方法 – user864408

+1

@ user864408:它是用C++編寫的;它不會像Java一樣使用相同的約定。它使用迭代器,這是一個概念,您需要了解是否要在任何時間長度內使用C++。 –

+2

您是否熟悉C++迭代器? Boost :: tokenizer基於那些而不是像nextToken()這樣的函數工作。該文檔就如何使用它們提取令牌提供了一個很好的例子。它沒有類型函數,但可以創建每種類型的std :: vectors,然後使用std :: find查看它是否是其中的一個。例如在C++ 0x中,std :: vector ops = {「=」,「+」,「 - 」,「*」,「/」}; std :: find(ops.begin(),ops.end(),tok)!= ops.end(); //如果「tok」是一個運算符,將會返回true' – Sean

相關問題