scanner類的實現
掃瞄器的類圖
兩個關鍵函式:
#include
字串轉double
double strtod(const char *nptr, char **endptr);
char* p;
number_ = strtod(&buf_[curpos_], &p);
strtod()會掃瞄引數nptr
字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,(所以a435無法識別,必須要先出現數字才可以)
到出現非數字或字串結束時('\0')才結束轉換,並將結果返回。若endptr不為null,則會將遇到不合條件而終止的nptr中的
字元指標
由endptr傳回。引數nptr字串可包含正負號、小數點或e(e)來表示指數部分。如123.456或123e-2。
#include
函式說明
檢查引數c是否為空格字元,也就是判斷是否為空格(' ')、水平定位字元
('\t')、歸位鍵('\r')、換行('\n')、垂直定位字元('\v')或
翻頁('\f')的情況。
返回值若引數c為空格
字元,則返回true,否則返回null(0)。
#include
#include
int main()}
scanner.h:
#ifndef _scanner_h_
#define _scanner_h_
#include enum etoken
;class scanner
;#endif // _scanner_h_
scanner.cpp:
#include "scanner.h"
#include scanner::scanner(const std::string& buf) : buf_(buf), curpos_(0)
double scanner::number() const
etoken scanner::token() const
void scanner::skipwhite()
void scanner::accept()
}
表示式計算器類的設計4(物件導向的表示式計算器7)
把符號表和變數表中的內容儲存到乙個檔案中,通過io檔案流,來把符號表和變數表儲存到檔案中。在這之前需要弄明白什麼是序列化和反序列化 物件的序列化 序列化 把物件轉換為位元組序列的過程 反序列化 把位元組序列恢復為物件的過程 我們要把symboltable類的物件 符號表 和storage類的物件 變...
表示式計算器
早在上大學的時候,就想編寫乙個可以計算數學表示式的計算器,因為windowsxp自帶的計算器不支援表示式輸入,當要計算乙個算式時,不太方便。表示式計算器看似簡單,但要想把它做完善,不太容易,經過幾次改進之後,於一年前完成了這個小程式,雖然可能會有一些不足,不過也不打算再投入時間了,價值不大,只是拿來...
計算器 字尾表示式
不過目前這個功能太少,而且能算的十分有限,測試輸入為 4 4 5 3 測試輸出為 4 4 5 3 27 主要就是了解一下怎麼把中綴表示式轉化成字尾表示式,然後再利用字尾表示式求值,我後續會完善這個程式,做個真正意義上的計算器。o o 轉化步驟我搜尋了一下,大致如下 將中綴表示式轉換為等價的字尾表示式...