Есть ли в библиотеке C ++ функции, которые преобразуют строку в арифметическую операцию? - PullRequest
0 голосов
/ 16 мая 2019

Я понимаю, что функция stoi () может удовлетворить потребности только целочисленного значения, однако мне нужно преобразовать следующую строку в фактическую арифметическую операцию. Например:

"3 + 7 * 4 - 2" в 3 + 7 * 4 - 2

где, если бы мне пришлось присвоить это переменной, результат будет 29.

1 Ответ

2 голосов
/ 16 мая 2019

Короче говоря: №

Как с этим справиться, зависит от того, как была создана строка. Это какой-то пользователь, предоставляющий простой ввод в stdin, и вы ловите его с помощью std::cin?

Если это действительно простое выражение (без скобок и т. Д.), Вы можете читать из stdin int, char, int, char, int и т. Д. И просто анализировать char как оператор.

Я столкнулся с алгоритмом Shunting-Yard , когда у меня возникла похожая проблема, и, казалось, это было именно то, что я хотел.

Вы могли бы также реализовать некоторую грамматику. Это действительно полезно, когда это работает, но это много работы и излишних. Смотрите разбор математического выражения в c ++ . У вас будут гораздо лучшие комментарии, чем у меня, с примерами кода.

...