C++调用python完成表达式计算

本文使用c++调用python实现一些简单的计算功能。

操作方法

  • 01

    vc下新建工程,添加代码: // ExpCalcTest.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "stdio.h" #include "Python.h" int main(int argc, char* argv[]) { char exp[][100] = {"1+3*4-6/2","2*(2+3-1)-(7+12)/3","adf + 30", "100/0 + 10"}; PyObject* pModule = NULL; PyObject* pCppEval = NULL; PyObject* pArg = NULL; PyObject* pResult = NULL; int nRet = 0; Py_Initialize(); if (!Py_IsInitialized()) { printf("初始化python环境出错\n"); return -1; } pModule = PyImport_ImportModule("cppevalpy"); if(!pModule) { printf("导入脚本文件cppevalpy.py出错\n"); return -1; } pCppEval = PyObject_GetAttrString(pModule, "cppeval"); if(!pCppEval) { printf("获得函数cppeval出错\n"); return -1; } char* sResult = (char*) www.gzlij.com malloc(100); for(int i=0;i<sizeof(exp)/100*sizeof(char);++i) { pArg = Py_BuildValue("(s)", exp[i]); if(!pArg) { printf("构造参数出错\n"); return -1; } pResult = PyEval_CallObject(pCppEval,pArg); PyArg_ParseTuple(pResult,"is",&nRet,&sResult); printf("%d,%s\n",nRet,sResult); } free(sResult); Py_Finalize(); return 0; }

  • 02

    然后需要修改vc的查找目录: include目录添加{python安装目录}/include lib目录添加{python安装目录}/libs 因为我的python安装版没有debug版的lib,所以vc工程我选择release版本。 如果需要使用debug版,请到网上下载debug版的lib库,或者自己编译python。 然后在编译生成的可执行程序目录添加脚本文件cppevalpy.py:

  • 03

    from __future__ import division def cppeval(exp): try: result = eval(exp) except Exception, e: return (-1,str(e)) if isinstance(result,float): result = round(result,2) result = str(result) if result.endswith('.0'): result = str(int(float(result))) return (1,result)

(0)

相关推荐

  • notepad++一键运行python,调用python调试

    之前懒蛇写了notepad++如何一键调用批处理,这次懒蛇讲一下如何一键调用Python.添加好一键调用,调试的效率高得多了. 操作方法 01 打开notepad++,找到菜单栏的run菜单. 02 ...

  • python 时间日期计算

    python,时间加减,时间计算,时间格式化,时间提取汇总 操作方法 01 >>> t1=[2010,11,9,19,20,30] #2010年11月9日 19:30:30 > ...

  • 怎么用python进行数学计算

    在上一篇中小编向大家介绍了python的安装并写了第一个程序--输出一段文字.在本篇中,小编将教给大家如何使用python强大的数学计算功能,它的功能远非系统自带的计算器所能比的. 操作方法 01 我 ...

  • 【Python教程】如何调用Python解释器?

    Python解释器就是Python的交互式运行环境,它怎么使用,是入门的关键所在 操作方法 01 在windows上,python的默认安装地址是在C:\python33\,将C:\python33\ ...

  • 如何调用Python语言中的abs方法获取绝对值

    绝对值是数学中的一个名词,同样的,在计算机语言中,也有方法获取绝对值.其中,对应的方法名为abs().如果是负数,取绝对值是对应的相反数:如果是正数和0,绝对值就是本身,二进制.八进制.十进制和十六进 ...

  • Windows下安装python的scipy等科学计算包

    如果要使用python进行科学计算.数据分析等,一定要安装scipy.seaborn.numpy等等包. 但Windows下安装python的第三方库经常会出现问题.此前,已介绍过Windows下如何 ...

  • Python库详解之math库

    本小节介绍python进行科学计算常用到的math库函数.可以通过help命令和dir命令了解math模块所有定义的常量和函数. 操作方法 01 首先我们看下定义的Number-theoretic a ...

  • AE表达式新手入门免坑提示

    其中用到的知识点包括操控点和表达式.操控点没什么好说,就是钉钉子嘛,但是表达式很有意思,所以我总结了几个初次接触表达式的新手可能会遇到的问题,也是我掉过的坑(往事如烟): 一.刚使用ae表达式会遇到很 ...

  • vs2015浮点数计算怎么提高数据精度?

    vs2015计算机运算中,难免要用到浮点数的计算,浮点数有其计算的精度,怎么在C#中提高数据精度呢?小下面我们就来看看详细的教程. 1.首先,定义4个浮点数类型的变量,保存计算的数值. 2.分别给变量 ...