物件導向的表示式計算器(三)

2021-06-22 01:22:40 字數 1229 閱讀 4266

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 轉化步驟我搜尋了一下,大致如下 將中綴表示式轉換為等價的字尾表示式...