Member 13020023 Ответов: 3

C++ python.h - как вычислить строку?


Привет.
Я никогда раньше не использовал Python.h, но я знаю Python.
Я пытаюсь сделать калькулятор, и мне нужно оценить строку, содержащую математические операции.
Таким образом, строка "2 + 2 * 2" должен был стать 6.
В обычном Python я бы просто использовал
eval("2+2*2")

Я не знаю, как сделать то же самое в C++ с Python.хотя...

Стоит также отметить, что моя версия Python-3.7

Что я уже пробовал:

Я еще ничего не пробовал, потому что даже не знаю, с чего начать.

3 Ответов

Рейтинг:
1

Richard MacCutchan

Если вы пытаетесь сделать это на чистом C/C++, я не знаю ни о какой подобной функции, но может быть какая-то сторонняя библиотека, которую google может найти для вас. Если вы пытаетесь использовать библиотеку python из C/C++, то взгляните на Справочное руководство по API Python/C — документация по Python 3.4.9[^].


Member 13020023

Я не пытаюсь сделать это на чистом C++. Я спрашиваю, как это сделать с Python.h.

Richard MacCutchan

Что это на самом деле означает? Питон.h звучит как заголовочный файл C/C++.

Richard MacCutchan

Я только что проверил; вам нужно перейти по ссылке, которую я дал вам в своем ответе.

Рейтинг:
1

Jochen Arndt

В C/C++ нет ничего подобного, потому что это компилируемый язык. У них нет таких функций, как eval() потому что для этого потребуется, чтобы компилятор (который переводит строки в машинный код) был частью созданного приложения.

Python-это в основном интерпретируемый язык (даже при использовании предварительной компиляции реализации Python в промежуточный код). Для этого требуется исполняемый файл на целевой машине, который в конечном итоге выполняет программу путем перевода исходного кода или промежуточного кода.

Если вам нужна такая функциональность в C/C++, вам нужен интерпретатор как часть приложения или быть вызванным как внешняя программа.


Member 13020023

А как насчет Python.h? Вы знаете какие-нибудь примеры?

Jochen Arndt

Вы можете встроить Python в C/C++ (вызвать код Python с помощью установленного интерпретатора Python), как описано в разделе
https://docs.python.org/3.1/extending/embedding.html

Рейтинг:
0

KarstenK

В C++ у вас есть два варианта, первый и самый простой-это оценка нет эта строка, но извлеките необходимые операции из пользовательского интерфейса и вычислите их. (Получите числа и операторы из ввода кнопки) или вы должны сами разобрать строковые данные для чисел и операторов, а затем решить их. Я нашел то, что искал.Проект DescCalc на Github. Но имейте в виду: это может быть слишком сложно для ваших нужд.

Я бы написал синтаксический анализатор, который вычисляет входную строку для чисел и операторов. Уважайте правила математики, как для:

a * b + c
(a + b) * c