Преобразование строки, содержащей бинарные операции, в удвоение в стеке

У меня есть следующие намерения:

Возьмите строку, такую ​​как:

 string test = "2.0+2.5";

и преобразовать это в двойной 4,5. Это возможно? Я также хочу распространить это на сложный тип. У меня больше опыта с Java, но я пытаюсь работать с C ++. Я попытался использовать stringstream, однако двойник, с которым у меня получилось, был только 2. Поэтому я полагаю, что он останавливается на «+». Спасибо за любую помощь или указатели.

0

Решение

Ты не можешь eval Строки в C ++, как вы можете в таких языках, как Python так далее. Таким образом, вам нужно написать код для анализа оператора, что-то вроде:

double v1 = lexical_cast<double>( /* extract "2.0" from test */);
double v2 = lexical_cast<double>( /* extract "2.5" from test */);
double result = 0.0;
char op = // extract '+' from test
switch(op) {
case '+':
result = v1 + v2;
break;
// etc

в качестве альтернативы, вы можете использовать язык сценариев, как Python от ваш код C ++ для eval утверждение в виде строки.

2

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


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