
C++
卧_听风雨
这个作者很懒,什么都没留下…
展开
-
Qt如何生成license文件
license文件生成过程:加密,解密,硬件绑定原创 2022-05-09 18:54:08 · 4136 阅读 · 1 评论 -
c++如何获取当前.exe所在目录
获取当前exe所在目录原创 2022-02-07 16:20:06 · 1151 阅读 · 0 评论 -
C++ 17如何折叠表达式
折叠表达式用法原创 2022-01-24 16:08:01 · 447 阅读 · 0 评论 -
error C4335: 检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式
解决方法1.双击错误,弹出错误所在文件:2.在桌面上新建cp.txt文件,并打开;3.把错误所在页面的所有代码Ctrl+C复制,并粘贴进cp.txt文档中,关闭txt并保存;4.重新打开cp.txt文档,并全部复制,并全部粘贴替换回原代码文档。5.再次运行,已经OK了。...原创 2021-06-11 09:15:28 · 5608 阅读 · 2 评论 -
C++对数计算log
对数图像的特点C++如何使用对数函数添加库:#include <math.h>2.用法double v,rv;v = 178.9;assert(v>0);// 对数的输入为正rv = log(v);// 以e为底的对数 与 指数 exp(rv) : 以e为底的指数,相对应rv = log10(v);// 以10为底的对数double m=4;rv = log(v)/log(m);// 以m(m不为1)为底的对数...原创 2021-06-07 17:09:34 · 5351 阅读 · 0 评论 -
c++自己定义实现split功能
vector<string> mystring_split::myStringSplit(const string& s, const string& spliter){ vector<string> strs; string str = s; int pos; pos = str.find(spliter); if (pos == string::npos) { strs.push_back(s); } else { if (str.f原创 2021-05-31 12:33:12 · 191 阅读 · 0 评论 -
C++异常处理try throw catch的用法样例
1、C++标准异常类用法#include <iostream> #include <exception> using namespace std; int main () { try { int* myarray= new int[100000]; } catch (exception& e) { cout << "Standard except原创 2021-04-28 14:25:59 · 313 阅读 · 0 评论 -
C++ 寻找三个数的中间数及其位置
vector<int> data;data.push_back(1);data.push_back(3);data.push_back(5);// 先找最大,最小值,及其位置int mind=10000000,maxd = -10000000;int minidx=0,maxidx=0;for(int i=0;i<3;i++){ if(mind>data[i]) { mind = data[i]; minidx = i; } if( maxd<d原创 2021-04-28 11:03:37 · 3813 阅读 · 0 评论 -
C++如何做字符串分割(5种方法)
1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&转载 2021-04-06 17:54:50 · 146567 阅读 · 12 评论 -
opencv如何把16位图像转换为8位图像
一、opencv自带的方法:Mat src16,tmp;Mat dst8 = Mat::zeros(src16.size(), CV_8U);normalize(src16, tmp, 0, 255, NORM_MINMAX);convertScaleAbs(tmp, dst8);二、自己代码实现 Mat src16; Mat dst8 = Mat::zeros(src16.size(), CV_8U); double mymin, mymax; cv::minMaxIdx(s原创 2021-03-25 17:21:58 · 9834 阅读 · 0 评论 -
C++计算均值方差
C++计算均值方差void getMeanStd0(const vector& vec, int& mean, double& stdd){assert(!vec.empty());mean = 0;stdd = 0;for (int i = 0; i < vec.size(); ++i){ mean += vec[i];}mean /= vec.size();for (int i = 0; i < vec.size(); ++i){ std原创 2020-06-24 17:58:56 · 6539 阅读 · 4 评论 -
C/C++递归算法小测试
递归算法找最大值// myRecrusion.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>int findMax(int a[], int n);int findMin(int a[], int n);void findMinMax(const int a[], const int n,int& min,int& max);int _tmain(int argc, _TCHAR* ar原创 2020-06-02 15:53:59 · 259 阅读 · 0 评论 -
C/C++函数重载和函数指针的用法
函数重载和函数指针函数重载:只针对同名函数的形参类型,个数,顺序,不看返回值。正确重载:void func(int a);void func(int a,int b);void func(float a);void func(float a,float b);错误重载(二义性):void func(int a,int b);void func(int a,int b, int ...原创 2020-03-27 17:19:42 · 1184 阅读 · 1 评论 -
C++基础——C++指针的引用
指针的引用:int*p1;int fun(int*& tmp){ tmp// int*}代码示例:#include<iostream>using namespace std;struct Teacher{ char name[64]; int age;};int getTeacherAge(Teacher** p){ Teacher*...原创 2020-10-13 10:41:48 · 1799 阅读 · 0 评论 -
C++基础——C++二级指针用法
C/C++语言中,二级指针,表示一级指针的地址,例如:int**p1;int* p2;p1 = &p2;具体用法示例:#include<iostream>using namespace std;struct Teacher{ char name[64]; int age;};int getTeacherAge(Teacher** p){ Tea...原创 2020-10-13 10:43:01 · 2975 阅读 · 0 评论 -
C/C++语言中char*和char[]的区别
一般来说,很多人会觉得这两个定义效果一样,其实差别很大。以下是个人的一些看法,有不正确的地方望指正。char* s = “abcd”; 本质上是定义了一个char型指针,它存储在字符常量区;char s[] = “abcd”; 本质上是一个char型数组,存储在栈空间里,它实际上相当于char s[] = {‘a’,‘b’,‘c’,‘d’,’\0’};因此,这三者的sizeof(s):...原创 2020-02-24 10:35:02 · 1103 阅读 · 0 评论 -
VS + Qt如何发布release版本,打包依赖的所有***.dll库
一、生成xxx.exe文件运行环境,切换到Release,并运行,生成xxx.exe文件;二、用Qt内置工具打包所有平台文件及***.dll文件原创 2020-02-03 12:56:26 · 2494 阅读 · 0 评论 -
Visual Studio如何查看自己xxx.exe程序依赖的所有动态链接库*.dll
一,找到自己VS版本的命令工具右键单击vs快捷方式——>更多——>打开文件位置:如图——>双击“Visual Studio Tools”快捷方式;——>双击“VS2013 x64 本机工具命令提示”(具体根据自己系统版本,自己选择)如图所示:二、输入命令,查看所依赖的所有**.dll库a, 复制自己xxx.exe的文件路径;如图:b, 输入指令并回车:...原创 2020-02-03 12:13:36 · 6803 阅读 · 0 评论 -
Qt + VS2013利用Opencv实现视频播放器功能
功能实现:1.弹窗,手动选择打开视频文件;2.视频播放,3.视频播放暂停,继续播放4.快进;5.截图demo下载:https://download.csdn.net/download/birenxiaofeigg/12089199头文件包含:#include <QLabel>#include <qtimer.h>#include <QFileDia...原创 2020-01-08 15:13:45 · 1128 阅读 · 0 评论 -
c++内存泄漏问题
产生原因分析内存泄漏:所以当程序退出时,系统会收回分配的内存,由于内存已被错误地释放掉,于是就会出现“Debug Assertion Failed”的错误。这个assert说明,有一块内存在被释放的时候,它的头部里面的信息已经被改掉了,和预期的不一样。内存分配的程序往往在被分配出的内存块头部放上一些校验信息。这个信息内存的用户是不知道也不应该修改的。这样,在内存被释放的时候,内存分配程序就可...原创 2020-01-08 11:30:44 · 358 阅读 · 0 评论 -
c++中vector的 = 与 assign的区别
网上错误说法 vector<int> v1(3, 10); vector<int> v2(5, 4); vector<int>v3(6, 5); vector<int>v4(7, 8); v2 = v1; v4.assign(v3.begin(), v3.end());第一种v1.size() = 0;v2.size() = 3...原创 2020-01-08 11:00:50 · 4363 阅读 · 0 评论 -
error C2872: “ACCESS_MASK”: 不明确的符号
原因:opencv的命名空间using namespace cv和windows.h中ACCESS_MASK定义冲突。解决方案:1、注释掉所有的using namespace cv,然后在需要的地方写上cv::(已试过,没有效果)。2、找到添加了#include <windows.h>的头文件:xxx.h,或者,包含有 windows.h的库文件,比如我的xxx.h中存在:...原创 2019-11-15 10:54:52 · 543 阅读 · 0 评论 -
Qt线程QThread开启和安全退出,QMutex线程加锁
1、线程开启Qt中,开启子线程,一般有两种方法:a, 定义工作类worker:worker继承 QThread, 重写run函数,在主线程中实例化worker,把耗时工作放进worker的run函数中完成,结束后,往主线程中发信号,传递参数即可。注意:此worker的实例,只有run函数在子线程中执行,worker的其他函数,均在主线程中执行。b, 定义工作类worker:worker...原创 2019-11-07 11:24:07 · 8600 阅读 · 0 评论 -
C++与Qt实现设计模式——单例化
单例化实现:1、私有化构造函数;2、静态化私有指针变量;3、建立静态public指针函数;4、静态变量初始化。例如:xxx.h函数定义如下:class myTest : public QObject{ Q_OBJECTpublic: static myTest* getInstance()// 静态指针函数 { static QMutex ss; static QM...原创 2019-11-06 18:03:29 · 273 阅读 · 0 评论 -
VS2013无法打开并识别xxx.props属性表(以opencv为例),提示import声明路径问题解决办法
VS2013无法打开并识别xxx.props属性表一、修改xxx.props内include内包含路径二、修改xxx.vcxproj内xxx.props路径一、修改xxx.props内include内包含路径 记事本打开 xxx.props文件,找到opencv包含路径,更改为自己opencv安装路径二、修改xxx.vcxproj内xxx.props路径以记事本打开xxx.vcxpro...原创 2019-10-14 10:41:48 · 546 阅读 · 0 评论 -
c++如何读取*.csv表格内的数据到Mat中
c++ 保存 .csv格式的文件很简单,那么怎么读取.csv表格数据呢,FILE *pFile;pFile = fopen("distanceData.csv", "r");char readLine[1024];int lineNo = 0;Mat dataMat = Mat::zeros(ROWS,COLS,CV_32FC1);while (1){ memset(readLi...原创 2019-03-27 16:12:36 · 1127 阅读 · 0 评论 -
opencv中Mat矩阵的合并与拼接
opencv如何将两个矩阵按行或者按列合并在Matlab中将两个矩阵合并非常方便:按行合并,如A=[B C];按列合并如A=[B ;C]其实opencv有自带函数:vconcat和hconcat函数,用于矩阵的合并与图像的拼接。 vconcat(B,C,A); // 等同于A=[B ;C] hconcat(B,C,A); // 等同于A=[B C]其实不用这两个函数,在C++中也...原创 2019-03-27 15:59:33 · 15078 阅读 · 0 评论 -
C++与Qt环境下串口开发调试
最近项目需要,针对VS2013 + Qt环境下,进行串口通讯。研究了一下,先简单做了个demo测试一下,Qt下串口是否好使。不多说,上代码://查找可用串口 foreach(const QSerialPortInfo &amp;info, QSerialPortInfo::availablePorts()) { QSerialPort serial; serial.setPort(...原创 2019-03-01 17:47:24 · 1198 阅读 · 0 评论 -
C++函数默认参数注意要点
C++中允许为函数提供默认参数,又名缺省参数。使用默认参数时的注意事项:① 有函数声明(原型)时,默认参数可以放在函数声明或者定义中,但只能放在二者之一double sqrt(double f = 1.0); //函数声明double sqrt(double f) //函数定义{ // .... } ② 没有函数(原型)时,默认参数在函数定义时指定.//没有 函数声明...原创 2019-02-27 15:55:35 · 740 阅读 · 0 评论 -
Qt与C++如何测试程序运行时间,精度高低
程序运行时间是编程的一项重要指标,在QT中如何测算程序的运行时间呢?测试函数:#include <math.h> void function() { unsigned int i,j; double y; for(i=0;i<1000;i++) for(j=0;j<1000;j++) ...原创 2019-01-18 10:06:36 · 918 阅读 · 0 评论 -
vs2013链接器->输入->附加依赖项->继承的值如何更改
卸载opencv后,发现VS2013每次编译时,还是会加载opencv的lib库文件。原因是,“附加依赖项”仍然会包含opencv的项目。来自“继承的值”,却不知道如何删除。经多方摸索,该问题终于解决了。解决方法:始图->其他窗口->属性管理器:注意:是“属性管理器”,而不是“属性窗口”或“属性页”。Debug| X64:(或Debug| Win32)双击:“Micros...原创 2018-11-21 18:35:11 · 6703 阅读 · 0 评论 -
C++基础——C++ make_pair用法
#include <iostream>using namespace std; /** std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型。例如std::pair<int,float> 或者 std::pair<double,double>等。pair实质上是一个结构体,其主要的两个成员变量是first和sec...转载 2020-10-13 10:44:31 · 66283 阅读 · 3 评论 -
c++ sort函数使用总结
需要头文件语法描述:sort(begin,end,cmp),cmp参数可以没有,如果没有默认非降序排序。以int为例的基本数据类型的sort使用:#include&lt;iostream&gt;#include&lt;algorithm&gt;#include&lt;cstring&gt;using namespace std;int main(){ int a[5]={原创 2018-10-10 17:47:06 · 304 阅读 · 0 评论 -
c++ string与char* char[] 相互转换
C++中string、char *、char[]的转换一、string转char*。主要有三种方法可以将str转换为char*类型,分别是:data(); c_str(); copy();1.data()方法,如:1 string str = “hello”;2 const char* p = str.data();//加const 33 char * p=(char*)str.da...原创 2019-03-27 17:51:50 · 1626 阅读 · 0 评论 -
opencv图像基本加减乘除与或非对数绝对值
图像基本运算 图像的基本运算有很多种,比如两幅图像可以相加、相减、相乘、相除、位运算、平方根、对数、绝对值等; 图像也可以放大、缩小、旋转,还可以截取其中的一部分作为ROI(感兴趣区域)进行操作, 各个颜色通道还可以分别提取及对各个颜色通道进行各种运算操作。 总之,对于图像可以进行的基本运算非常的多,只是挑了些常用的操作详解。void add(InputArray src1, Inpu...原创 2019-04-02 11:11:47 · 1460 阅读 · 0 评论 -
解决QT+VS中无法打开/无法识别/无法打开/找不到ui_xxx.h文件
问题描述在Qt+VS开发环境下,经常出现此类问题:有时候,明明存在ui_xxx.h文件,或者,根本不存在该ui_xxx.h文件,又或者,把对应的xxx.ui从项目中排除后,再添加进项目里面,就提示“无法识别”该ui_xxx.h文件。此时,对项目重新生成,或者重新编译,清理,再build,没有丝毫卵用。。。解决方法第一种:若该项目是,从网络下载别人的项目:首先检查该项目的平台工具集是否与你...原创 2019-08-14 12:49:19 · 30289 阅读 · 6 评论 -
libcurl库在VS2013(或更高)环境下的编译,环境配置,demo测试,错误处理
环境及工具vs2013professional,win10 x64curl-7.65.3:可以官网下载:https://curl.haxx.se/download.html也可以从https://download.csdn.net/download/birenxiaofeigg/11434185 下载(已验证)curl编译(此为网上多数编译方式,但有问题,下面有解决方法):libc...原创 2019-07-26 12:01:22 · 667 阅读 · 0 评论 -
C++与opencv实现OTSU自适应阈值分割算法
OTSU算法原理Otsu算法(大津法或最大类间方差法)使用的是聚类的思想。它把图像的灰度数按灰度级分成2个部分,使得两个部分之间的灰度值差异最大,每个部分之间的灰度差异最小。通过方差的计算来寻找一个合适的灰度级别来划分。 所以可以在二值化的时候采用otsu算法来自动选取阈值进行二值化。otsu算法被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响。因此,使类间方差最大...原创 2019-08-05 11:30:55 · 4045 阅读 · 1 评论 -
C++与Qt实现MySQL数据库的增删改查
头文件MySQL数据库的安装与环境配置,网上大把,可参考:https://www.cnblogs.com/xtu-wlf1212/p/8764015.html头文件包含:#include <QtSql/qsql.h>#include <QtSql/qsqldatabase.h>#include <QtSql/qsqlquery.h>#include...原创 2019-06-17 10:36:39 · 6911 阅读 · 1 评论 -
Qt通过QChart实时显示曲线,显示两个纵坐标轴并刷新
一新建QChartView类原创 2019-06-17 08:59:14 · 10838 阅读 · 16 评论