前一陣子複習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...