一个计算四则表达式的模板
在9月8日那天我特意编写的,给大家分享的,一个很方便的函数模板,可以并且只可以计算含括号的四则表达式
只有一个函数接口:int GetExpValue(_Tstream& istrin, _T& nReturn)
参数解释:
istrin: 一个输入流,可以是标准IO流,可以是文件流,也可以是串流Xtp| O)D,Od,q4^
nReturn:用于接收计算结果的变量,计算所使用的类型由这个变量确定,Z@-EZb@
返回值:tmy@]
返回非0表示计算成功,0表示计算失败有错误
/tGxwAw
程序代码: )@lF#\ z9V
l5r3A&_O@tE$m%R
namespace fy_Exp{
namespace {template <class _T>3o2y:t\;a/f4b
inline _T GetExpValue(_T t[], char& csym){D3ei iW
char c=csym; csym=0;
switch(c){
case '+':return t[0] += t[1];
case '-':return t[0] -= t[1];
case '*':return t[0] *= t[1];9@fIS+I p3s n)l#MSl N
default: return t[0] /= t[1];//case '/':W@ NO7s V!xdSy
}
}}mBor JbaZ
template <class _T, class _Tstream>,ku#P({IG
/* _Tstream: inputstream, _T: get return value%bi6v1M/{X{)H }
* Return nonzero if get value successfully */}]\4cp
int GetExpValue(_Tstream& istrin, _T& nReturn){
_T t[3] = {0}; //雨中飞燕之作
char csym[3] = "++";
int nLevel = 1, nERR = 0;
if(!(istrin>>t[1]))istrin.clear();6h(V!h4_"V'Yq
for(;;){
if(istrin>>csym[2]){