基於C 實現帶parser功能的計算器

2021-08-14 08:18:02 字數 1260 閱讀 9480

前一陣子複習stl的時候,結合輪子哥的教程做了一下基於stack的帶parser功能的計算器。具體功能就是輸入帶括號的四則運算,比如」(1+2)*3+2」,程式可以自動parser,並得出最後的結果為11。

現在直接貼**,具體的注釋都在裡面~

calculator_parser的github位址

#include 

#include

#include

#include

using

namespace

std;

// 基於stack構建計算器(帶括號等等)

// ① item類 儲存資料和操作符

// ② 出入push和pop函式

// ③ calculate函式——裡面有乙個stack的堆和 stringstream,用於分析每個字元形式

// ④ run函式——實現具體計算

struct item

item(char operators): op {}

};// run返回的棧頂的最上面兩個元素的和,儲存在第二高的棧頂元素上。並把最高的棧頂元素出棧。

void run(stack

& items)

}void push(stack

& items, int number)

}int pop(stack

& items)

/*4*/

// pop()沒有返回值

auto number = items.top().number;

items.pop();

return number;

}int calculate(string text)

); while (true)

);items.push({});

break;

case

')':

push(items, pop(items));

break;

case

'+':case

'-':case

'*':case

'/':

items.push();

break;

}if (isdigit(op))

else

if (ss.eof())

// 到頭了——>string stream到達末尾

else

}}int main()

C 實現帶寫時拷貝功能的String類

字串寫時拷貝實現原理 通過物件的引用計數來減少記憶體的申請開銷,經過拷貝構造或賦值函式得到的所有物件,在還沒有對其中某個某個物件進行修改操作時,都共享乙個物件的記憶體。否則,如果原有物件的引用計數大於1時,將會為修改的物件分配新的記憶體,並在原有的物件引用計數中減一。成員變數是字元指標型別,字串前四...

基於USB的IAP功能實現

7 改變stm3210 evaluation board的boot選項為user flash啟動,啟動時pc端dfu中可以看到找到了開發板。如果提示需要找到新的裝置,需要安裝驅動,請將路徑指向dfu的安裝路徑下driver目錄。如果dfu中無法看到找到開發板,請按住reset鍵再鬆開 如果按下key...

基於C 實現TCP聊天室功能

tcpserver.cpp tcpserver.cpp defines the entry point for the console application.include stdafx.h include include include using namespace std pragma co...