C++
文章平均质量分 52
yongwuzhijing800
工程师
展开
-
VS2010-VC++之CEdit换行
1.新建一个编辑框控件(Edit Control)Multiline (属性设置为True)Auto HScroll(属性设置False),这样就可以实现每一行填满后自动换行2.Vetrical Scroll(垂直滚动条)(属性设置为True)当输入或显示超过编辑框的大小后会出现垂直滚动条3.如果是输入,滚动条会自动移动跟随到当前输入行,但是如果是设置将很多内容一次性让编辑框显示,滚动条就会一直处于最上方,需要手动拉到最下面才能看见最后一行的内容,在很多时候这是我们不需要的,而是想要滚原创 2022-04-07 13:27:08 · 1066 阅读 · 0 评论 -
Visual Studio 2010使用sqlite3
1.在http://www.sqlite.org/download.html下载sqlite-dll-win32-x86-3380200.zip。2.进入VisualStudio 2010安装文件目录3.在目录 sqlite-dll-win32-x86-3380200 中,执行下面命令,生成sqlite3.lib文件"d:\install\Microsoft Visual Studio 10.0\VC\bin\lib.exe" /MACHINE:IX86 /DEF:sqlite3.def4.原创 2022-03-30 19:20:41 · 431 阅读 · 0 评论 -
cmake 历史版本
有些软件需要cmake的对应的历史版本,进行配置cmake 历史版本 https://cmake.org/files/v2.8/原创 2022-01-06 10:06:39 · 2027 阅读 · 0 评论 -
Doxygen + graphviz + Windows Help Workshop代码文档生成工具
1.DoxygenDoxygen能将程序中的特定批注转换成为说明文件。它可以依据程序本身的结构,将程序中按规范注释的批注经过处理生成一个纯粹的参考手册,通过提取代码结构或借助自动生成的包含依赖图(include dependency graphs)、继承图(inheritance diagram)以及协作图(collaboration diagram)来可视化文档之间的关系, Doxygen生成的帮助文档的格式可以是CHM、RTF、PostScript、PDF、HTML等。下载地址 https://ww原创 2021-12-29 14:40:43 · 610 阅读 · 0 评论 -
Qt 国际化-多种语言方式
1在工程中,新建资源文件,命名为translator在工程目录中的资源文件结构2修改pro在pro文件中添加TRANSLATIONS += \ tr_zh.ts \ tr_en.ts3代码中所有需要翻译的字符串用tr("")包含 eg: tr(“中文内容”)MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow..原创 2021-02-26 14:29:08 · 16238 阅读 · 0 评论 -
C++ 检查内存泄露工具
cppcheck (推荐):Cppcheck 是一种 C/C++ 代码缺陷静态检查工具。不同于 C/C++ 编译器及很多其它分析工具,它不检查代码中的语法错误。Cppcheck 只检查编译器检查不出来的 bug 类型,其目的是检查代码中真正的错误(即:零误报)debug_newDmalloc-Debug Malloc Library.MEMWATCH-由Johan Lindh编写,是一个开放源代码C语言内存错误检测工具,主要是通过gcc的precessor来进行。IE Leak Detect原创 2021-02-23 15:28:05 · 13587 阅读 · 0 评论 -
直播系统开发:基于Nginx与Nginx-rtmp-module PDF文件下载
本博客做为实践补充。大纲就不写了,首先,书偏应用,适合新手!直播系统开发:基于Nginx与Nginx-rtmp-module下载地址https://download.csdn.net/download/w09103419/13622963原创 2020-12-10 17:17:30 · 1771 阅读 · 1 评论 -
TinyXml 查询、修改指定节点和增加、删除节点
/*!* /brief 修改指定节点的文本。** /param XmlFile xml文件全路径。* /param strNodeName 指定的节点名。* /param strText 重新设定的文本的值* /return 是否成功。true为成功,false表示失败。*/bool ModifyNode_Text(const std::string& XmlFile,c原创 2020-12-10 15:59:07 · 2623 阅读 · 0 评论 -
tinyxml保存xml文件
bool saveDeviceInfoStorageFileT(const std::string strFileName, const std::vector vec){ //创建xml文件,strFileName为文件保存的路径,若创建成功返回true,否则false try { //创建一个XML的文档对象。 TiXmlDocument DeviceInfoStora原创 2020-12-10 15:58:52 · 629 阅读 · 0 评论 -
软件框架-无绪开发4
模块化架构将单个应用拆分拆分成不同的模块可大大改善设计。20世纪60年代意大利面条代码。模块化程序,是由不同模块构成,一个模块是一组类的集合,模块中有些类是public级别,外部模块可访问;有些是private基本,外部不可访问。此外,一个模块会依赖于其他模块,并在较高层次上声明了执行所需的功能性环境。评价模块好坏: 检测模块间的依赖。项目都会演进,规模变大。1.模原创 2017-03-15 10:38:46 · 1158 阅读 · 0 评论 -
软件框架-无绪开发5
设计API时要区分其目标用户群提供给客户端代码的API与为开发商提供的API是不同的。1.API升级(1)抛出异常模式,不太好,用户升级一次每个api需要写好几行代码(2)预留参数设计时最好哪些不准备别人继承的类都用 final 修饰2.合理分解API一类供他人调用来完成某些功能(final类);一类供他人来扩展API的(预留参数)==>可读性和代码升级需要面向对象原创 2020-12-10 15:55:49 · 879 阅读 · 0 评论 -
软件框架-无绪开发2
1. 工厂方法优于构造函数优点: (1)工厂方法返回值并不一定是声明类型的实例,可以是它的子类实例代码更加简洁。------(更好体现多态)(2)每次返回的对象也并不一定都是新创建的对象,完全可以将其缓存。相比每次调用构造函数都创建一个实例,而工厂方法可以缓存以前创建的对象,并重用它们,节省内存。(3)对同步的控制,在工厂方法中可以将创建对象前后的相应代码进行统一处理;构造原创 2017-03-08 15:48:51 · 883 阅读 · 0 评论 -
软件框架-无绪开发3
编程:面向接口而非实现 从实现中分离接口,再作为API提供出去牢记: 不要去依赖那些没有在文档中提起的属性和资源应该向设计者要求提供合适的API抽象定义和实现内容要分离1.移除方法或者字段public 类型,最好不移除,否则用户的代码可以不兼容了private类型,可以移除protected类型,也许可以移除,但也可能出现问题2.移除或者添加一个类或者接口一原创 2017-03-10 16:29:23 · 1015 阅读 · 0 评论 -
软件框架-无绪开发
1.首先建立一个基本的术语库描述整个API设计的需求出现缘由,并概述各设计过程的主要目标。原创 2017-03-08 10:48:14 · 1221 阅读 · 0 评论 -
QT+SQLite 判断表中是否含有指定字段
// 判断表 CaseHistory 中是否有字段 SuccessRateQString strSql = QString::fromLocal8Bit("select * from sqlite_master where name='CaseHistory' and sql like '%SuccessRate%'");QSqlQuery query;query.exec(strSql);原创 2017-01-20 09:19:37 · 3075 阅读 · 0 评论 -
unsigned char* 类型数据转换字符串 string
如下方法//const unsigned short *p = (const unsigned short *)apBulkBuf;//const WORD *p = (const WORD *)apBulkBuf;if (*(unsigned short *)apBulkBuf == kSynWordDeviceInfoValue)//if (*p == kSynWordDeviceIn原创 2017-01-10 13:40:50 · 18901 阅读 · 0 评论 -
C++ vector 赋值
vectorivec1(10,42); //内置方法,初始化的内容为10个42 print(ivec1.begin(),ivec1.end()); vectorivec2(10); vector::size_type ix=0; for(ix;ix<10;++ix) { ivec2[ix]=42; //下标操作 } print(ivec2.begin(),ivec2.end原创 2017-01-09 10:24:13 · 2153 阅读 · 0 评论