把c转为c++对象

c文件内容

typedef struct ast_value_t
{ast_metadata    meta;ast_value_data data;ast_value_type type;
};

转为的内容

cpp文件内容

ast_value_t:: ast_value_t()
{return;
}ast_value_t :: ~ast_value_t()
{return;
}

h文件内容

class ast_value_t
{public:ast_value_t();~ast_value_t();private:ast_metadata    meta;ast_value_data data;ast_value_type type;
};

python脚本内容

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 输出文件地址
import sys
outPath = "/home/"
# 打开一个文件(文件地址,输出的文件名称)
def analysis(filePath,fileName):# 需要写入的.h文件fH = open(outPath + fileName + ".h",'w+')# 需要写入的.cpp文件fCpp = open(outPath + fileName + ".cpp",'w+')# 要读取的文件file = open(filePath, 'r')strs = file.readlines()readLine = ""# 默认状态state = 0for str in strs:# 出现{在第一行直接跳过if state == 9:if str.find("{") == 0:state = 1continue# 判断是否以struct开头和typedef struct开头if state == 0 and (str.find("struct") == 0 or str.find("typedef struct") == 0):# 判断第一行结尾是否是;如果是就结束不操作if str.find(";") != -1:state = 0readLine = ""continue# 修改状态为在写入state = 1# 分割字符串获取类名称data = str.partition("struct")# print "内容是", data[2]# 如果第一行没有以{开头说明在下一行以{开头所以给个跳过状态if str.find("{") == -1:state = 9# 开始读取类名称equation = data[2].partition("{")# 写入.h文件writeH(fH,1,equation[0].strip())# 写入.cpp文件writeCpp(fCpp,equation[0].strip())# 如果是正在写入状态,并且第一行不是}说明还在写,所以读取elif state == 1 and str.find("}") != 0:readLine += "\t\t" + str.strip()+"\n"# 如果是正在写入状态,并且第一行是}说明写完,所以状态清空并写入记载内容elif state == 1 and str.find("}") == 0:state = 0writeH(fH,2,readLine)readLine = ""print "转换成功!"# 关闭打开的文件file.close()fH.close()fCpp.close()# 写文.h文件
# 1表示class,2表示private开始
def writeH(file,type,content):bodyContent = ""if type == 1:bodyContent = ("\n\nclass %s\n{\n\tpublic:\n\t\t%s();\n\t\t~%s();" %(content,content,content))elif type == 2:bodyContent = ("\n\tprivate:\n%s};" %content)file.write(bodyContent)# 写文.cpp文件
def writeCpp(file,content):bodyContent = ("\n%s :: %s ()\n{\n\treturn;\n}\n\n%s :: ~%s ()\n{\n\treturn;\n}\n" %(content,content,content,content))file.write(bodyContent)# 修改导出路径
def editOutPath():global outPathoutPath = raw_input("请输入导出置路径:")print "修改成功!"# 修改导出路径
def convertFile():path = raw_input("请输入文件路径:")name = raw_input("请输入导出后文件名称:")analysis(path,name)# 结束
def close():print "再见"sys.exit()def playWrite():print "---------- 欢迎进入执行系统 ---------------"print "1. 修改导出地址\n2. 开始转换文件\n0. 退出"runLang = raw_input("请输入:")switch = {'1': editOutPath,'2': convertFile,'0': close}switch.get(runLang)()playWrite()playWrite()

博主认为网上会有对应文章,搜索很长时间都没有找到,博主只好自己动手,希望博主这篇文章可以帮助到需要的人

python把c语言的.h文件转为c++的.cpp和.h文件相关推荐

  1. 将.fig或其他图片文件转为Visio可编辑的.vsd文件

    (1)Matlab的.fig文件转为Visio的.vsd文件 在Matlab中打开.fig 文件,编辑-复制图窗到Visio即可转为完全可编辑的vsd文件. 如果复制图窗仍然是图片,可能是 Matla ...

  2. Yolo v5的txt标注文件转为coco格式的json标注文件

    社区上将coco数据集格式的json标注文件转为yolo的txt格式的文章较多,但是如何将txt转为json博主并没有发现.这篇文章就给大家提供一个很方便的小脚本,实现这个功能. 需要注意的是,如果直 ...

  3. 文件转换-用于性能测试(将postman导出的.json文件转为jmeter可识别的.jmx文件)

    步骤: 1.环境要求(二选一): ①本地配置java开发环境,参考:Java 开发环境配置 | 菜鸟教程 ②若不想配置java开发环境,需要有java的运行环境:jre,下载配置参考:https:// ...

  4. python将txt文件转为字符串_python如何将txt文件转成json数据

    python如何将txt文件转成json数据,首先我们要明白json的数据格式是如何的,实际上和python的字典格式几乎是一样的,也是需要一个大括号给括起来,知道了这点我们就知道怎么处理了. 工具/ ...

  5. python读取C语言头文件

    在使用python编程过程中,经常需要对C语言文件进行操作,即.h文件进行读取操作,这里举例说明,python读取C语言头文件,提取其中#define 宏定义 废话少说,上代码 import os i ...

  6. python转csv_python脚本如何将Excel文件转为csv文件(代码)

    本篇文章给大家带来的内容是关于python脚本如何将Excel文件转为csv文件(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助.#!/usr/bin/env python __ ...

  7. python头文件math.h_将常量从.h文件导入到python中

    我一直在寻找一个简单的答案这个问题,但似乎我找不到一个.我宁愿远离任何尚未包含在 Python 2.6 / 2.7中的外部库. 我有2个c头文件类似于以下内容: //constants_a.h con ...

  8. Python:pmml格式文件的简介、安装、使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略

    Python:pmml格式文件的简介.安装.使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略 目录 pmml格式文件的简介 1.PMML结构 pmml安装 pmm ...

  9. Python数据分析·读取CSV文件转为字典

    Python数据分析·读取CSV文件转为字典 1.pandas 读取CSV 2.CSV转为字典 3.CSV转为数组 Python pandas包可以直接读取CSV文件,为了接下来的数据分析,考虑到转为 ...

最新文章

  1. RTP timestamp与帧率及时钟频率的关系
  2. 夺命雷公狗---javascript NO:03 流程结构
  3. 网易云信流媒体服务端架构设计与实现
  4. 安卓网络编程(Socket、WebView控件)
  5. http强缓存在firefox和chrome之间的差异
  6. C++设计模式-面向对象程序设计要点以及封装性特点
  7. arm linux支持web协议,arm linux web服务器
  8. 苹果/微软/特斯拉的产品美学——向丑而生?
  9. [06]python3 shutil高级文件操作模块
  10. 【冰糖R语言】(串列)对象不能强制改变成‘double‘种类
  11. 1、Python学习笔记第一课:python介绍
  12. html5 粒子动画效果制作,8款惊艳的HTML5粒子动画特效
  13. dpi和ppi换算_ppi和dpi换算(1ppi等于多少dpi)
  14. 新款趣味测试小程序源码_测试可用
  15. swap未禁用导致的k8s NotReady
  16. Python 模块探索 —— pretty_errors
  17. SQL Server 2008新特性之压缩备份(backup compression)
  18. typora上传图片
  19. python绘图案例——递归绘制分形树
  20. vshield manager的一些笔记

热门文章

  1. tf.pad函数功能介绍
  2. JAVA原生mvc实现用户信息的增删查改
  3. javascript核心
  4. 使用graphite和grafana进行应用程序监控
  5. Java 流程控制与数组
  6. XHR(XMLHttpRequest)与Linux下的CGI交互
  7. 小小攻城师,步步达成梦想!
  8. 七种布局显示方式效果及实现
  9. UIPopoverController的使用
  10. aspnet_Users中LastActiveDate的问题