c++
文章平均质量分 59
kangshuaibing
这个作者很懒,什么都没留下…
展开
-
MFC 加载pdf
https://github.com/tracker-software/PDFEditorSDKExamples右击项目-类向导-添加类-类库中的MFC类添加如下图的类型库,生成CPXV_Control.h和CPXV_Control.cpp正常使用即可原创 2021-05-17 18:33:28 · 1098 阅读 · 0 评论 -
OCX控件在web页面不能加载的问题
https://blog.csdn.net/zhushentian/article/details/80732950 https://blog.csdn.net/smilingc/article/details/51848669转载 2020-12-18 15:03:51 · 454 阅读 · 0 评论 -
spdlog使用
目录Spdlog优点Example简单封装与使用使用中遇到的问题Spdlog优点只需包含头文件 无需依赖第三方库 支持跨平台 支持多线程 源码地址:https://github.com/gabime/spdlog Example//// Copyright(c) 2015 Gabi Melman.// Distributed under the MIT License (http://opensource.org/licenses/MIT)/.原创 2020-11-18 17:35:02 · 7054 阅读 · 1 评论 -
char[]与char*比较
char a[] = "abc";char b[] = "abc";char *c = "abc";char *d = "abc";if(a==b) cout<< "a[] == b[] " << endl;else cout<< "a[] != b[] " << endl;if(c==d) cout<< "*c and *d == equal!" << endl;else .原创 2020-10-16 10:06:16 · 704 阅读 · 0 评论 -
C++11相关
程序简洁、现代auto类型推导 初始化列表可以任何对象初始化;STL容器初始任意长度std::vector<int> v = {1,2,3.4,5};for循环新写法方便的对容器或者数组 遍历使用for(aoto i: a){}lambda表达式auto add = [](int a, int b) { return a + b; };std::cout << add(1, 2) << std::endl;...原创 2020-09-24 09:05:27 · 78 阅读 · 0 评论 -
priority_queue用法
leetcode:前 K 个高频元素/* * @lc app=leetcode.cn id=347 lang=cpp * * [347] 前 K 个高频元素 */// @lc code=startclass Solution {public:// 小顶堆 class mycom { public: bool operator()(const pair<int, int>& lhs, const pair<int, int...原创 2020-09-22 18:14:04 · 242 阅读 · 1 评论 -
c++ 左值引用与右值引用
转自1:https://zhuanlan.zhihu.com/p/97128024转自2:https://guodong.plus/2020/0307-190855/左值引用先看一下传统的左值引用。int a = 10;int &b = a; // 定义一个左值引用变量b = 20; // 通过左值引用修改引用内存的值左值引用在汇编层面其实和普通的指针是一样的;定义引用变量必须初始化,因为引用其实就是一个别名,需要告诉编译器定义的是谁的引用。int .转载 2020-09-22 14:41:15 · 279 阅读 · 0 评论 -
sizeof和sizeof(string)问题
转自:https://www.cnblogs.com/wanghetao/archive/2012/04/04/2431760.html今天看《程序员面试宝典》一书(为了应付将要到来的微软笔试),看到了sizeof(string)这个问题。在Dev C++上测试的结果是4,很不明白。上网搜了一下,得到如下结果:string strArr1[]={"Trend", "Micro", "Soft"};sizeof(strArr1)=12转自:http://apps.hi.baidu.com.原创 2020-09-20 18:02:01 · 780 阅读 · 0 评论 -
new和malloc的区别
new和malloc的区别 1.申请的内存所在位置 new操作符从自由存储区上为对象动态分配内存空间,而malloc从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new进行内存申请,该内存即为自由存储区。而堆是操作系统所维护的一块特殊内存,用于程序的动态内存分配。C语言使用malloc从堆上分配内存,使用free释放对应内存。 那么自由存储区是否可以是堆(问题等价于new是否能够在堆上动态分配内存)?这取决于operator new的实现细节。事...原创 2020-09-18 17:45:06 · 115 阅读 · 0 评论 -
if 与 else if的坑
leetcode-75. 颜色分类void sortColors(vector<int>& nums) { int p0 = 0, curr = 0; int p2 = nums.size() - 1; while (curr <= p2) { if (nums[curr] == 0) { swap(nums[curr], nums[p0]); curr++; p0++; } else if (nums[curr] == 2) {原创 2020-09-16 16:55:22 · 277 阅读 · 0 评论 -
字符串函数手写实现:strlen(), strcpy(), strstr(), strcat(), strcmp(), memcpy()
strlen()函数 功能:计算给定字符串的(unsigned int型)长度,不包括'\0'在内int strlen(const char *str) { assert(str != NULL); int len = 0; while( (*str++) != '\0') len++; return len;} strcpy()函数 功能:字符串复制函数,strcpy把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*。char *..原创 2020-09-13 22:26:33 · 357 阅读 · 0 评论 -
虚函数表
虚机制:(*(p->vptr)[n])(p);静态绑定直接指向内存;动态绑定实现,根据p的指向调用内容不同多态-虚函数-动态绑定本质上是同一回事解释的不错的文章:https://blog.csdn.net/primeprime/article/details/80776625...转载 2020-09-09 10:09:16 · 124 阅读 · 0 评论 -
快速排序实现
快速排序实现://时间复杂度最坏O(n^2),平均O(nLogn)void quickSort(int left, int right, vector<int> & nums){ //从小到大 if (left >= right) return; int base = nums[left]; int i = left, j = right,temp = 0; while (i < j) { //从后往前,直到找到比基准函数小的值 whil原创 2020-09-08 18:28:53 · 68 阅读 · 0 评论 -
printf()/sprintf()/snprintf()区别
三个打印函数printf()/sprintf()/snprintf()区别printf( const char *format, ...) 格式化输出字符串,默认输出到终端-----stdoutsprintf(char *dest, const char *format, ...) 格式化输出字符串到指定的缓冲区snprintf(char *dest, size_t size,const char *format, ...) 按指定的SIZE格式化输出字符串到指定的缓冲区#inc...原创 2020-09-08 17:15:47 · 191 阅读 · 0 评论 -
OpenCV ——图像旋转
void RotateImg2(cv::Mat& src, cv::Mat& dst, double rotAngle){ cv::Scalar borderColor = Scalar(255, 255, 255); double angle = rotAngle; cv::Point2f center(src.cols / 2, src.rows / 2); cv::Mat rot = cv::getRotationMatrix2D(center, angle, 1); c.原创 2020-08-07 14:49:58 · 255 阅读 · 1 评论 -
STL-vector自定义排序(sort)和自定义去重(unique)
STL自定义排序(sort)和自定义去重(unique) 自定义比较函数 #include<iostream>#include<algorithm>#include<cstring>#include<vector>using namespace std;class Link{public: int a; int b; string str;};int main(){ Link l1; l1.a = 3; l1.b原创 2020-07-07 19:31:34 · 1912 阅读 · 0 评论 -
MFC调用COM组件(注册表)
项目-添加类-MFC-ActiveX控件中的MFC类注册表-生成类,便会生成相应的.h和.cpp文件资源视图-工具箱-选择项-COM组件,在工具箱会生成相应的控件,使用方法和其他控件一样原创 2020-06-23 19:51:53 · 1308 阅读 · 1 评论 -
sizeof和strlen的区别
直接上代码:#include <stdio.h>#include <iostream>using namespace std;int main(){ char *p = "123456"; int a[5] = { 7,8,9 }; cout << sizeof(p)<<endl; cout << strlen(p)<<endl; cout << sizeof(a) << endl;原创 2020-06-23 19:38:23 · 127 阅读 · 0 评论 -
Bat脚本编译vs工程
@echo 初始化环境@set OldPath=%cd% ::x86_amd64的路径要自己找 @cd /d D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64 @if not %errorlevel% == 0 goto :endcall vcvarsx86_amd64.bat@if not %errorlevel% == 0 goto :endcd /d %OldPath% @if ...原创 2020-06-10 15:55:13 · 2021 阅读 · 0 评论 -
C++常见面试问题汇总2——STL
C++的STL源码(这个系列也很重要,建议侯捷老师的STL源码剖析书籍与视频),其中包括内存池机制,各种容器的底层实现机制,算法的实现原理等) STL源码中的hashtable的实现 STL中unordered_map和map的区别和应用场景 STL中vector的实现 STL容器的几种迭代器以及对应的容器(输入迭代器,输出迭代器,前向迭代器,双向迭代器,随机访问迭代器)顺序容器...原创 2020-04-21 15:21:20 · 318 阅读 · 0 评论 -
C++面试题总结
vector和list的区别,应用1、概念:1)Vector连续存储的容器,动态数组,在堆上分配空间底层实现:数组两倍容量增长:vector 增加(插入)新元素时,如果未超过当时的容量,则还有剩余空间,那么直接添加到最后(插入指定位置),然后调整迭代器。如果没有剩余空间了,则会重新配置原有元素个数的两倍空间,然后将原空间元素通过复制的方式初始化新空间,再向新空间增加元素,最后析构...转载 2020-03-25 11:23:39 · 171 阅读 · 0 评论 -
QT5的程序快速打包
每次通过windeployqt打包都需要命令行形式过于麻烦,通过脚本方式(qt.dat)可实现快速打包,只需要修改Qt安装路径即可@echo offclstitle QT程序打包call D:\Qt\Qt5.7.0\5.7\msvc2015_64\bin\qtenv2.batecho 正在检查文件名if "%~x1"==".exe" (%~d1cd %~p1winde...原创 2020-03-17 10:25:23 · 273 阅读 · 0 评论 -
正则表达式简介及在C++11中的简单使用
正则表达式(regular expression)是计算机科学中的一个概念,又称规则表达式,通常简写为regex、regexp、RE、regexps、regexes、regexen。 正则表达式是一种文本模式。正则表达式是强大、便捷、高效的文本处理工具。正则表达式本身,加上如同一门袖珍编程语言的通用模式表示法(general pattern notation),赋予使用者描述和...转载 2018-12-11 09:38:31 · 146 阅读 · 0 评论 -
MFC工作者线程
对于Windows 来说,所有线程都是一样的。但是MFC却把线程区分为两个种类型:User Interface( Ul)threads(用户界面(UI)线程)和Worker threads(工作者线程)。两类线程的不同之处在于∪I线程具有消息循环而工作者线程没有。UI 线程可以创建窗口并处理发送给这些窗口的消息。工作者线程执行后台任务,因其不接收用户的直接输人,所以不需要窗口和消...转载 2018-11-09 14:42:15 · 822 阅读 · 0 评论 -
C/C++ 中const 修饰符用法总结
https://www.cnblogs.com/icemoon1987/p/3320326.html转载 2019-04-04 10:38:42 · 199 阅读 · 0 评论 -
MFC串口通信(一)——MSComm控件简介
Visual C++为我们提供了一种好用的ActiveX控件Microsoft Communications Control(即MSComm)来支持应用程序对串口的访问,在应用程序中插入MSComm控件后就可以较为方便地实现对通过计算机串口收发数据。 要使用ActiveX控件MSComm,程序员必须将其添加入工程。使用MSCOMM的流程如下:一、注册MSCOMM1、下载控件MSCOMM32...原创 2018-11-29 15:54:42 · 6572 阅读 · 1 评论 -
MFC串口通信(二)——使用MSComm控件实现串口通信
由于项目需要,最近在写一个简单的串口通信,基于MFC框架,写完之后特此回顾记录一下学习的过程:串口通信主体框架(1) 初始化界面(自动获取全部可用串口)(2) 打开串口 (读取串口号,初始化串口参数(波特率、校验位、数据位等),若串口已经打开则关闭串口)(3) 发送数据 (更新控件状态,进入MSComm事件驱动函数,读缓冲区,数据转换,更新编辑框成员函数,更新编辑框内容)(4) ...原创 2018-11-29 15:42:33 · 19256 阅读 · 19 评论 -
Windows字符集(MFC字符串转换)
本文章总结自黑马程序员视频:英文 1个字符对应1个字节 多字节 中文 1个字符对应多个字节 宽字节 Unicode 比如(1)utf-8一个字符3个字节 (2)GBK 一个字符2个字节MFC多字节转为宽字节 TEXT、TCHER、_T是由自适应编码转换,L("")多字节转宽字节统计字符串长度方法1. 统计char*多字节用strlen() cha...原创 2018-11-21 14:54:19 · 930 阅读 · 0 评论 -
Tesseract4.0在VS2015 X86 debug中编译
转自:https://blog.csdn.net/yph001/article/details/78762518第一步编译采用上个链接中的方法,避免了不少坑。然后把在C盘生成目录放在了自己的F盘,如图(tessdata为所用字库) include目录根据上个链接博客最终的目录,leptonia为自己建的目录,在C:\Users\13267\.cppan目录下搜索把allh...原创 2018-11-07 18:36:49 · 389 阅读 · 0 评论 -
CDatabase类和CRecordset类关于执行Sql语句的用法区别
1 CRecordset类通过open(..)可以执行sql语句,并且将记录集存在对象中2 CDatabase类通过ExecuteSql(..)执行创建 插入,删除,修改等不返回记录集操作第一种用法: CDatabase dw; dw.Open(_T("MaGic"),false,false,_T("ODBC;DSN=SQLServer"),false); CRecordset ss(&a...转载 2018-10-31 09:28:44 · 1940 阅读 · 0 评论 -
DDX_Control和DDX_Text的区别
转自:https://blog.csdn.net/az44yao/article/details/47809515void CTestDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CTestDlg)DDX_Control(pDX, IDC_EDT_NAME, m...转载 2018-10-26 10:26:43 · 1155 阅读 · 0 评论 -
鼠标操作事件,截取摄像头视频中区域,图片预处理,识别数字
通过回调函数截取摄像头视频感兴趣区域(仪器数字区域),并进行预处理,然后识别,代码如下 效果图如下//鼠标操作事件,截取摄像头视频中区域,识别图片#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2\imgproc\imgpr...原创 2018-09-29 16:00:11 · 842 阅读 · 5 评论 -
int a[10]和int* a=new int[10]]区别
1、int a[10]使用简单,系统会自动实现内存的分配和回收。int* a=new int[10]需要判断内存是否分配成功,以及在不用时需要使用delete[] a进行内存释放,否则会造成; 2、如果不是a[10],而是a[1000000000]或者更大的话,那一般情况下,就只能使用int* a=new这种方式了。这个涉及到内存存放位置的问题,int a[]这种方式,内存是存放在栈上;i...转载 2018-09-21 14:59:18 · 2737 阅读 · 0 评论 -
MFC打开图片
打开图片方法通过获取图片路径,可以打开文件夹选择其中一张图片,也可以通过循环得到多张图片,还可以通过打开文件夹获取整个文件夹下的所有图片1.打开文件夹选择多张图片void Ocr::OnBnClickedButtonOpenpic(){ TCHAR szFilter[] = _T("bmp文件(*.bmp)|*.bmp|JPEG文件(*.jpg)|*.jpg||"); //文件类型...原创 2018-11-30 09:34:07 · 4295 阅读 · 1 评论 -
QT5.7安装配置win10
Qt Creator Community安装使用进入官网:http://download.qt.io/archive/qt/,会提供各种版本的下载,下载的红色框标记的版本,下载之后开始安装,安装路径自己可选 默认全部下一步即可,不过为了保险,在选择组件我选择时全部勾选 下载及配置调试器 我的机器是win10,因此下载win 10 sdk。链接:https://...原创 2018-11-30 14:13:18 · 3302 阅读 · 6 评论 -
Qt运行cmd命令
参考链接:https://blog.csdn.net/cqltbe131421/article/details/59484097功能:实现DICOM图转JPG参考链接是通过DCMTK工具中dcmj2png.exe命令行方式,我现在要实现在QT中命令行方式转JPG功能,直接上代码dcmj2png.exe语法:dcmj2pnm [options] dcmfile-in [bitmap...原创 2019-02-28 16:38:44 · 3832 阅读 · 0 评论 -
QT删除QString前面特定字符串(递归实现)
将字符串“000000000000029120”前面的0去掉,用递归方法removefirst0(QString s){ if(!s.left(1).operator ==("0")) return s; else return removefirst0(s.right(s.length()-1));}输出结果:29120;对2...原创 2019-01-09 10:55:48 · 7473 阅读 · 0 评论 -
Qt读写ini文件
一 背景 1 ini文件介绍.ini 文件是Initialization File的缩写,即初始化文件。除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息等。 2 ini文件格式INI文件由节、键、值...转载 2018-12-17 15:14:57 · 902 阅读 · 0 评论 -
QT5的程序打包发布(打包成exe可执行程序)
QT打包的两种方式:一个是QT5自带的windeployqt(不需要下载安装),它可以找到程序(exe)用到的所有库文件,并且都拷贝到exe程序的当前文件。此时打包的exe较小,需要和拷贝进来的文件放一起运行,也可以将这些文件再次打包成一个大的exe文件,此时用的第二种打包方式。 另一个是Engima Virtual Box,这是下载链接Engima Virtual Box,软件图标如...原创 2018-12-11 11:30:20 · 62109 阅读 · 19 评论 -
二维码(QR code)基本结构及生成原理
链接:https://blog.csdn.net/u012611878/article/details/53167009转载 2018-12-27 14:54:06 · 1714 阅读 · 0 评论