Разбор C ++ MuParser не работает должным образом

Я только начал играть с MuParser — кажется, действительно классная библиотека! Однако я застрял при разборе следующего выражения. Кто-нибудь может увидеть из фрагмента кода ниже, где я иду не так? Каким бы ни был ‘count’, результат всегда равен 0 ??

mu::Parser parser;

string rule = "(n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2)";
parser.DefineConst("n", count);
parser.SetExpr(rule);
int retVal = parser.Eval();

Спасибо!

0

Решение

Итак, я думаю, что ваш код неверен.
это падает во время выполнения.
Вы можете поместить свой код в try {} catch {}, чтобы найти вашу проблему.
например :

        try
{
mu::Parser parser;
string rule = "(n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2)";
parser.DefineConst("n", count);
parser.SetExpr(rule);
int retVal = parser.Eval();

std::cout << retVal << std::endl;

}
catch (Parser::exception_type &e)
{
std::cout << e.GetMsg() << std::endl;
}
0

Другие решения

Для всех, кто заинтересован. Я добавил оператор по модулю, добавив следующее:

parser.DefineOprtChars("%");
parser.DefineOprt("%", moduloOperator, mu::prINFIX);

double moduloOperator(double v, double w) {
return (int)v % MAX(1, (int)w);
};
1

По вопросам рекламы [email protected]