您的位置:首页 > 编程语言 > Qt开发

Qt解析四则运算表达式

2017-12-19 21:23 330 查看
利用Qt的QString和QStringList进行的简单的表达式解析,不带括号,可以是小数。

double MainWindow::calculate(QString str)
{
//利用递归去掉所有的加号
if(str.indexOf("+") != -1)
{
int i=str.indexOf("+");
return calculate(str.left(i))+calculate(str.right(str.length()-1-i));
}

//去掉减号
if(str.indexOf("-") != -1)
{
QStringList list = str.split('-');
double value = calculate(list[0]);
if(str.at(0) == "-")
value = -value;
for(int i=1; i<list.count(); ++i)
{
value -= calculate(list[i]);
}
return value;
}

//去掉乘号
if(str.indexOf("*") != -1)
{
int i=str.indexOf("*");
return calculate(str.left(i))*calculate(str.right(str.length()-1-i));
}

//去掉除号
if(str.indexOf("/") != -1)
{
QStringList list = str.split('/');
double value = calculate(list[0]);
for(int i=1; i<list.count(); ++i)
{
value /= calculate(list[i]);
}
return value;
}

return str.toDouble();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: