当前位置: 首页 > wzjs >正文

国外做mg动画的网站大全文学网站开发

国外做mg动画的网站大全,文学网站开发,网站建设力度不够论文,比较成功的网络营销案例在编写c头文件后,还需要再.cpp文件里面复制一份非常的麻烦 找过了不少方法都很难实现 提供了一个python脚本帮助你实现这个过程 #!/usr/bin/env python3 …

在编写c++头文件后,还需要再.cpp文件里面复制一份非常的麻烦

找过了不少方法都很难实现

提供了一个python脚本帮助你实现这个过程

#!/usr/bin/env python3                                                                                                                                                              
import re
import sysdef process_class(content):"""提取并处理内容中的下一个类,返回函数定义和剩余内容。"""class_match = re.search(r'class\s+(\w+)(?:\s*:\s*\w+)?', content)if not class_match:return None, contentclass_name = class_match.group(1)class_start = re.search(rf'class\s+{class_name}(?:\s*:\s*\w+)?\s*{{', content)start_pos = class_start.end() - 1brace_count = 1i = start_pos + 1while i < len(content) and brace_count > 0:if content[i] == '{':brace_count += 1elif content[i] == '}':brace_count -= 1i += 1class_content = content[start_pos:i]remaining_content = content[i:]# 移除访问修饰符class_content = re.sub(r'^\s*(public|private|protected):\s*', '', class_content, flags=re.MULTILINE)# 查找函数声明func_pattern = r'(friend\s+)?([\w:&<>]+\s*[\*&]?\s*)?(operator[\w<>=!+\-*]+)?\s*(\w+)?\s*\(([^)]*)\)\s*(const)?\s*;'functions = re.findall(func_pattern, class_content, re.MULTILINE)definitions = []for func in functions:friend, return_type, op_name, func_name, params, const = func# 清理参数:移除默认值cleaned_params = []for p in params.split(','):p = p.strip()if p:p = re.sub(r'\s*=\s*[^,)]+', '', p)cleaned_params.append(p)params = ', '.join(cleaned_params)# 清理非友元函数的返回类型if not friend and return_type:while return_type.startswith(('static ', 'virtual ', 'explicit ')):return_type = return_type.split(' ', 1)[1].strip()return_type = return_type.strip() if return_type else ''const = ' const' if const else ''if op_name:func_name = f'operator{op_name[len("operator"):]}'elif not func_name:continueif friend:func_def = f"{return_type} {func_name}({params}){const} {{\n     \n}}\n"else:func_def = f"{return_type} {class_name}::{func_name}({params}){const} {{\n     \n}}\n"definitions.append(func_def)return definitions, remaining_contentdef process_global_functions(content):"""提取并为没有定义体的全局函数生成定义。"""# 正则表达式匹配没有函数体的全局函数声明global_func_pattern = r'^\s*(?!class|struct)(\w+\s+)+(\w+)(\s*\([^;]*\))\s*;'matches = re.finditer(global_func_pattern, content, re.MULTILINE)definitions = []for match in matches:full_match = match.group(0)# 提取返回类型、函数名和参数return_type = match.group(1).strip()func_name = match.group(2).strip()params = match.group(3).strip()# 清理参数:移除默认值cleaned_params = []for p in params[1:-1].split(','):p = p.strip()if p:p = re.sub(r'\s*=\s*[^,)]+', '', p)cleaned_params.append(p)params = ', '.join(cleaned_params)func_def = f"{return_type} {func_name}({params}) {{\n    \n}}\n"definitions.append(func_def)return definitionsdef process_header(input_file, output_file):"""处理头文件并生成对应的 .cpp 文件。"""with open(input_file, 'r', encoding='utf-8') as f:content = f.read()function_definitions = []# 处理所有类while True:defs, content = process_class(content)if defs is None:breakfunction_definitions.extend(defs)# 处理全局函数global_defs = process_global_functions(content)function_definitions.extend(global_defs)# 写入输出文件output = [f'#include "{input_file}"\n\n'] + function_definitionswith open(output_file, 'w', encoding='utf-8') as f:f.writelines(output)print(f"成功生成 {output_file}!") # 这一行建议注释掉if __name__ == '__main__':if len(sys.argv) < 2:print("用法: python3 script.py input.h [output.cpp]")sys.exit(1)input_path = sys.argv[1]output_path = sys.argv[2] if len(sys.argv) >= 3 else input_path.replace('.h', '.cpp')process_header(input_path, output_path)

这个脚本接收两个参数,第一个是你的头文件,第二个是输出的地址,可以不提供第二个地址,则默认以cpp结尾存储再当前目录

全局脚本调用

~/.local/bin 是用户专属的可执行文件目录,推荐用于全局调用。
查看是否存在,不存在则手动创建一下

mkdir -p ~/.local/bin

然后把python脚本放到这个目录下
在这里插入图片描述
注意看一下是否有执行权限
在这里插入图片描述
没有的话添加一下

chmod +x ~/.local/bin/generate_cpp.py

然后需要配置环境变量
查看当前环境

echo $PATH

查看这个目录是否在环境下
不在的话我们添加一下

vim ~/.bashrc

把下面这个添加到最后一行

export PATH="$HOME/.local/bin:$PATH"

再重启一下

source ~/.bashrc

你就可以看到了
在这里插入图片描述
然后我们就能全局调用这个脚本

测试示例

在这里插入图片描述

#pragma once
#include <iostream>class Stonewt
{
public:enum Mode { STONE, POUND, INT };private:enum { Lbs_per_stn = 14 };int stone;double pds_left;double pounds;Mode mode;public:Stonewt(double lbs, Mode form = STONE);Stonewt(int stn, double lbs, Mode form = STONE);Stonewt(){stone = pounds = pds_left = 0;mode = STONE;}void stoneMode() { mode = STONE; }void poundMode() { mode = POUND; }void intMode() { mode = INT; }~Stonewt(){};bool operator<(const Stonewt &s);bool operator>(const Stonewt &s);bool operator<=(const Stonewt &s);bool operator>=(const Stonewt &s);bool operator==(const Stonewt &s);bool operator!=(const Stonewt &s);Stonewt operator+(const Stonewt &s);Stonewt operator-(const Stonewt &s);Stonewt operator-();friend Stonewt operator*(const Stonewt &s1, const Stonewt &s2);friend std::ostream &operator<<(std::ostream &os, const Stonewt &);friend std::istream &operator>>(std::istream &os, Stonewt &);
};
class test:Stonewt{
public:void fun1();virtual void fun2() const;static void fun3();
};
void show(const Stonewt & st);
void func();

测试示例来自c++Primerplus编程练习第11章第6题

这是生成的stonewt.cpp文件

#include "stonewt.h"Stonewt::Stonewt(double lbs, Mode form) {}Stonewt::Stonewt(int stn, double lbs, Mode form) {}bool Stonewt::operator<(const Stonewt &s) {}bool Stonewt::operator>(const Stonewt &s) {}bool Stonewt::operator<=(const Stonewt &s) {}bool Stonewt::operator>=(const Stonewt &s) {}bool Stonewt::operator==(const Stonewt &s) {}bool Stonewt::operator!=(const Stonewt &s) {}
✹ Stonewt Stonewt::operator+(const Stonewt &s) {}
✹ Stonewt Stonewt::operator-(const Stonewt &s) {}Stonewt Stonewt::operator-() {}
✹ Stonewt operator*(const Stonewt &s1, const Stonewt &s2) {}
✹ std::ostream & operator<<(std::ostream &os, const Stonewt &) {}
✹ std::istream & operator>>(std::istream &os, Stonewt &) {}void test::fun1() {}void test::fun2() const {}void test::fun3() {}void show(const Stonewt & st) {}void func() {}

这些是vim的提示,实际上没有

vim中调用

注意要完成前面的全局配置
推荐安装vimplus,可以参考这里

:!generate_cpp.py % %.cpp 

可以直接用这个调用,可以省略%.cpp

配置快捷键

添加我们自己的配置

 vim ~/.vimrc.custom.config 

在其中添加这样的内容,你就可以使用,cpp来生成源文件了

function! GenerateCpp()writelet output = system('generate_cpp.py ' . expand('%') . ' ' . expand('%:r') . '.cpp')if v:shell_errorcopencaddexpr outputecho "Error generating " . expand('%:r') . ".cpp"elseecho "Generated " . expand('%:r') . ".cpp successfully!"endif
endfunctionautocmd FileType cpp,h nnoremap <silent> <leader>cpp :call GenerateCpp()<CR>  

文章转载自:

http://UlAZEbaC.mrfjr.cn
http://7ypgzyP5.mrfjr.cn
http://5HBpWecm.mrfjr.cn
http://IXpcf7ag.mrfjr.cn
http://BLoV2had.mrfjr.cn
http://k0TpjdA8.mrfjr.cn
http://YwHrLTDl.mrfjr.cn
http://BXPypTVh.mrfjr.cn
http://GDEU9VZR.mrfjr.cn
http://FFRIXIjE.mrfjr.cn
http://NXUk4FOp.mrfjr.cn
http://V7RH00V7.mrfjr.cn
http://S3J9NtxA.mrfjr.cn
http://Z3KrZR8X.mrfjr.cn
http://U5pryKYm.mrfjr.cn
http://gb96s5qB.mrfjr.cn
http://wEEM6wnP.mrfjr.cn
http://gOYvy3XY.mrfjr.cn
http://cNcm2o5u.mrfjr.cn
http://F1UXdCN2.mrfjr.cn
http://hPqxREM1.mrfjr.cn
http://nj6VNnxZ.mrfjr.cn
http://senI1N4B.mrfjr.cn
http://oQpapqu4.mrfjr.cn
http://5wV8j1zZ.mrfjr.cn
http://Kbia7SfC.mrfjr.cn
http://RY4Sxb5w.mrfjr.cn
http://56hrausm.mrfjr.cn
http://B9cKDCCt.mrfjr.cn
http://YModpLQg.mrfjr.cn
http://www.dtcms.com/wzjs/779902.html

相关文章:

  • 城乡厅建设部网站首页上海住房和城乡建设厅网站首页
  • 做网站送的手机站是什么wordpress主题 大
  • 塑胶原料东莞网站建设技术支持本地wordpress无法打开网站
  • 怎么添加网站 多少钱广州seo网站推广优化
  • 做网站的傻瓜软件制作小程序难吗
  • 做暧免费观看网站湖南微信网站公司电话号码
  • 网络维护图片上海网站建设乐云seo模板中心
  • 河南建筑官网首页seo 视频
  • 青州网站建设wordpress5.0.2版的新功能
  • 钟楼做网站福州科技网站建设怎么做
  • 高端网站设计哪个好室内设计怎么样
  • 网站图标文件下载好用的wordpress插件推荐
  • 做网站要有什么团队互联网方案设计
  • 现在找个网站这么难的吗做刷赞网站能赚钱吗
  • 溧阳 做网站长沙信息网
  • 网站建设需要上传数据库吗外贸简单网站建设
  • 江西星子网嘉兴优化网站公司
  • 科技公司网站模板国内建站平台
  • 中国外贸出口网站小企业管理软件排名
  • 东莞网站制作公司联系方式京东网站建设的要求
  • 上海定制网站建设公司网站正能量就是一打开全是的
  • 万网域名指向网站江苏建设网官方网站
  • 中国国防建设网站建e网室内设计网网址
  • 阿里巴巴网站建设与维护wordpress国内免费教程
  • 龙岩建设网站如何用自己电脑做网站页面
  • 做门窗的 在哪个网站跑业务跑业务wordpress菜单跳转到目录
  • 微网站建设方案书正常网站跳出率
  • 哈尔滨网站制作推广吉林最新消息今天新增
  • 企业信息公开网查询系统常州网站seo
  • 申请网站一年多少钱做网站域名重要吗