C++
文章平均质量分 58
绿色盒子
热情的冒烟的绿色的木头的盒子
展开
-
智能指针的由来
三种难以判断的指针空指针:值为null的指针空悬指针:指向已经销毁的对象或者已经回收的地址的指针野指针:未经初始化的指针1. 原始指针的问题指向对象的原始指针如果时坏的,尤其时当暴露给其他线程时,容易发生内存方面的问题;比如总容易放生的空悬指针问题。例:有俩个指针p1,p2,指向堆上的同一个对象object,p1,p2位于不同的线程中,假设线程A通过p1将对象销毁了(尽管把p1置为了NULL),那p2就成了空悬指针,这是一种典型的C++内存错误。2.一个"解决办法"一个解决空悬指原创 2021-04-30 11:38:18 · 281 阅读 · 1 评论 -
IP协议完整数据结构
一 IP协议IP协议的完整数据结构为:以太网数据头|IP数据头| TCP/UDP数据包头 |数据1.以太网头#define ETHER_ADDR_LEN 6 //以太网数据头结构体,共14字节typedef struct ether_header{ u_char ether_dhost[ETHER_ADDR_LEN]; //目的MAC地址 6字节 u_char ether_shost[ETHER_ADDR_LEN]; //源MAC地址 6字节 u_s...原创 2020-09-22 10:46:51 · 2028 阅读 · 1 评论 -
qdebug输出中文乱码
记得改一下配置!工具->文本编辑器->行为->UTF-8BOM:改为"如果编码是UTF-8则添加"原创 2020-07-16 10:46:07 · 1972 阅读 · 0 评论 -
dllimport与dllexport作用与区别
从msdn的(在Dll中为导出类,在调用Dll工程的exe中为导入类)解释中可以知道在编译DLL的时候,动态库上的类,函数,变量都应该用dllexport设置为导出在使用DLL时,动态库上的类,函数,变量都应该用dllimport设置为导入如何做到这点呢一个简单的做法就是在DLL的.cpp加入#define DLLCLASS_EXPORTS在头文件中加入#ifdef DLLCLASS_EXPORT #define EXT_CLASS _declspec(dllexp.原创 2020-07-09 08:39:18 · 1568 阅读 · 0 评论 -
MFC无界面后台运行程序
1.头文件声明主界面指针class CXXXXDlg;//主界面类前置声明class CXXXXApp : public CWinApp{public: CXXXXApp(); CXXXXDlg *m_pDlg;//声明一个主界面指针public: virtual BOOL InitInstance(); DECLARE_MESSAGE_MAP() virtual int ExitInstance();};extern CLedSettLockApp theApp;2原创 2020-05-29 09:01:49 · 1489 阅读 · 0 评论 -
把资源中的PNG(背景透明)图标图标设置为菜单图标
首先导入PNG图像到资源中,需要自定义资源文件夹,然后导入图像,如图所示:加载png图像,返回HBITMAP对象_inline HBITMAP XXXDlg::loadimage(UINT nResID){ CImage m_Image; CComPtr<IStream> stream; stream = NULL; HBITMAP hbitmap; // ...原创 2019-07-01 13:54:49 · 574 阅读 · 0 评论 -
自绘菜单(CMenu)
.CPP#include "stdafx.h"#include "MyMenu.h"CMyMenu::CMyMenu(){ m_szItemSize.cx = 95; m_szItemSize.cy = 26; m_nTextSize = 13; m_sResourceType = _T("PNG"); m_sTextName = _...原创 2019-07-01 13:55:57 · 467 阅读 · 0 评论 -
寻找两个三角形重合部分的最大三角形
如图所示,两个三角形重合存在很多种情况,上图举出其中4个例子,本文要讲的是已知两个三角形三个顶点坐标,求重叠部分最大三角形的顶点坐标;虽然已知顶点坐标,位置关系已经确定,但是编程解决的是一类问题,所以各种情况还是要考虑到。定义变量保存结果 double resultx[3]; double resulty[3];两个三角形的坐标变量 doub...原创 2019-06-28 12:12:09 · 1367 阅读 · 0 评论 -
中国省-市-县(区)三级城市数据(json和数组)
{ "北京市":{ "北京市":["东城区","西城区","朝阳区","丰台区","石景山区","海淀区","门头沟区","房山区","通州区","顺义区","昌平区","大兴区","怀柔区","平谷区","密云区","延庆区"] }, "天津市":{ "天津市":["和平区","河东区","河西区","南开区","河北区","红桥区","东丽区","西青区","津南区","北辰区...原创 2019-08-27 16:37:40 · 5746 阅读 · 2 评论 -
时间复杂度详解,稳重中带一点皮
--------------------- 作者:Eirlys_North 来源:CSDN 原文:https://blog.csdn.net/Eirlys_North/article/details/52959540?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!-宝宝为啥听不懂他们在讨论的时间复杂度 0.0-我怎么知道这个算法运行得比那个算法快 0.0...转载 2018-10-10 10:50:46 · 355 阅读 · 0 评论 -
CComPtr(com智能指针)用法以及CImage加载图像流示例
1. **COM接口指针很危险**COM接口指针很危险,因为使用过程中需要每一个使用者都要严格并且正确的AddRef和Release,一旦出现问题,就会造成对象不能被正常释放,或者对象被重复删除,造成程序崩溃。所以使用COM接口,必须小心翼翼才行。但是,即使所有的代码中,都正确的AddRef和Release,也不一定能保证万无一失,例如:void SomeApp( IHello * ...原创 2018-10-19 09:25:03 · 441 阅读 · 0 评论 -
VC注册表写入和读取字符串
关于注册表读写的文章网上有很多,但是真的要用到的时候发现很难找到直接向注册表读写Cstring字符串的文章void CTestDlg::WirteREG(void){ int nIndex=1; Cstring strr1.Format("%i,%i,%i",1,2,3); Cstring strr.Format("CmSet%i",nIndex); HKEY hKey = nullpt原创 2017-06-03 14:49:15 · 3554 阅读 · 0 评论 -
约瑟夫问题(数组形式以及向量形式)的解决方式
约瑟夫问题 据说著名犹太历史学家 Josephus 有过以下的故事:在罗马人占领乔塔帕特后, 39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不 要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开 始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有 人都自杀身亡为止。然而 Jo...原创 2018-06-04 12:03:44 · 518 阅读 · 0 评论 -
CImage实现多张图像的查看以及图像自由缩放,拖动
CImage提供了增强的位图支持,包括加载和保存 JPEG、 GIF、 BMP 和可移植网络图形 (PNG) 格式的图像的能力。为加载图像提供了更方便,更多样的选择,本文以CImage为核心实现多张图像的查看以及图像缩放,拖动。1.载入图像void XXXDlg::OnDropFiles(HDROP hDropInfo){ // TODO: 在此添加消息处理程序代码和/或调用默认...原创 2018-09-14 17:00:33 · 2118 阅读 · 3 评论 -
高精度计算
一、数据输入先将要计算的数据输入到内存中一般是按位存到数组中,按位对齐。定义:第一位表示个位,n表示最高位。1、利用字符串输入:先以字符串方式输入,再存入数组。对非法输入可以作检查,处理小数、有符号数比较方便。但需要对字符串操作比较熟悉。字符串的输入和转换可用如下语句:int a[100] = {0}, b[100] = {0};int ka, kb, kc;char ...转载 2018-09-06 19:22:13 · 453 阅读 · 0 评论 -
按修改时间重命名批处理(C++)
按修改时间重命名批处理(C++)实现步骤:1.获取指定目录下所有文件文件名2.获取所有文件创建时间,修改时间,访问时间3.根据文件时间排序4.根据排序重命名文件 1.获取指定目录下所有文件文件名 std::vector<CString> Files; //记录文件名void GetPathFile(CString strDir){ CFileFin...原创 2018-09-14 16:59:27 · 1585 阅读 · 0 评论 -
-1.#IND和-1.#INF等“无效”浮点数说明及其判断
常用的浮点数INF&NaN判断方法: Windows中,使用_isnan判断NaN情况;使用!_isnan && !_finite判断INF情况;使用!_finite判断NaN和INF两种情况 //0/0的情况下或得到NAN,非零除以零会得到INF double spread=0.0; spread/=0.0; if (_isna...原创 2018-09-21 10:01:41 · 1970 阅读 · 0 评论 -
MFC 渐变色背景以及控件透明处理
mfc实现某对话框背景色渐变如果是单文档视图结构,在OnDraw实现代码,如果是对话框结构,在该对话框所在的cpp里的OnPain函数【如果没有这个函数,请在类向导里派生】里实现如下代码即可,本示例是在对话框结构,某个对话框里实现的,效果如下附图CPaintDC dc(this); // device context for painting CRect Rect; Ge...原创 2018-10-18 09:38:00 · 1691 阅读 · 0 评论 -
二维向量vector的使用
定义://二维向量的定义vector< vector<int> > b(10, vector<int>(5,0)); //创建一个10*5的int型二维向量bvector<vector<int> > b;//创建一个未知大小的int型二维向量b,//card为自定义结构体或类vector< vector< card...原创 2018-05-09 13:50:43 · 15267 阅读 · 0 评论