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

自己写代码做网站要什么技术seo优化的价格

自己写代码做网站要什么技术,seo优化的价格,网站可以给pdf做笔记,网站建设规划书感受在编写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://www.dtcms.com/wzjs/388384.html

相关文章:

  • 找个网站看看广告软文代理平台
  • 本地生活网站建设淘宝热搜关键词排行榜
  • 成都网站制作公司有哪些网络营销顾问是做什么的
  • 做两个网站 之间超链接风云榜小说排行榜
  • 武汉公司 网站建设武汉百度开户代理
  • html个人网站策划书网络口碑营销名词解释
  • 建立网站第一步怎么做企业在线培训系统
  • 襄阳网站制作7月新闻大事件30条
  • 做网站 参考文献搭建一个网站平台需要多少钱
  • 做网站开发学什么软件市场营销推广方案模板
  • jsp网站建设项目实战电销系统软件排名
  • 有没有在线看片资源seo整站怎么优化
  • 手工做衣服的网站免费注册个人网站不花钱
  • 北京b2b网站开发东莞网站建设
  • wordpress站点用户注册西安网站建设制作
  • 微网站如何做微信支付宝支付免费接单平台
  • 淘客自己做网站百度网页版浏览器
  • 提高网站流量seo软件工具
  • 紧急通知网页升级记住我们商丘网站优化公司
  • 苏州市城乡建设档案馆网站临沂百度推广多少钱
  • 沈阳做网站的公司有哪些西安官网seo
  • 平面设计在线制作南宁白帽seo技术
  • 虎门做网站北京网络推广外包公司排行
  • 重庆市城乡建设与发展委员会网站google搜索引擎
  • 网站建设天津百度一下你就知道移动首页
  • 网站建设的实训周个人免费自助建站网站
  • 上海金融网站建设武汉seo诊断
  • 城市建设协会网站网络销售面试问题有哪些
  • 大连日语网站开发优化关键词有哪些方法
  • 广州市物联网应用示范项目seo点击软件