- 博客(31)
- 资源 (2)
- 收藏
- 关注

原创 error C2872: “CPoint”: 不明确的符号
在duilib中使用CImage类时,其包含了#include 文件,文件中使用了CPoint,CSize等类由于duilib本身也有自己的CPoint,CSize等类,这会导致 error C2872: “CPoint”: 不明确的符号 等问题vs编译器编译时会报如下错误:1>c:\program files (x86)\microsoft visual studio 1
2017-07-24 14:11:23
8064

原创 教你如何用duilib实现控件可拖动,可拖拽
要实现的效果: 鼠标点击控件(自绘控件,可继承任意控件类,下文将给出示例),并且进行拖拽,会有一个半透明黑色阴影来表示当前拖动的位置。当松开鼠标,控件重新绘制在鼠标松开的位置。拖拽功能的实现代码主要在DoEvent函数和DoPostPaint函数中完成的。实现步骤: 1、 继承需要的控件并重写DoEvent函数,在UIEVENT_BUTTOND
2017-07-21 14:58:02
4441
1
转载 map的详细使用
一. 声明二. 插入操作2.1 使用[ ]进行单个插入2.1 使用insert进行单个和多个插入三. 取值四. 容量查询五. 迭代器六. 删除交换6.1 删除6.2 交换七. 顺序比较八. 查找九. 操作符C++中map提供的是一种键值对容器,...
2018-07-19 17:07:51
671
原创 boost::regex的使用详解
Regex 用法详解2008年03月15日 星期六 14:34Regex头文件: “boost/regex.hpp”正则表达式被封装为一个类型 basic_regex的对象。我们将在下一节更深入地讨论正则表达式如何被编译和分析,这里我们首先粗略地看看ba...
2018-07-13 11:43:35
12609
3
原创 获取exe所在文件的路径
CString LG_GetFilePathName() { wchar_t szPath[MAX_PATH + 1] = { 0 }; ::GetModuleFileName(NULL, szPath, MAX_PATH + 1); *_tcsrchr(szPath, '\\') = 0; CString strPath(szPath); return strPath
2017-11-03 16:59:39
1253
原创 wstring转string,string转wstring
wstring转string // 使用CRT库的wcstombs()函数将wstring转string,平台无关,需设定locale,这种方法可以兼容中文 string WString2String(wstring& ws) { string curLocale = setlocale(LC_ALL, NULL); setlocale(LC_ALL, "chs"); con
2017-11-01 09:36:09
1022
原创 CString转string、string转CString
CString转string // CString to String string CString2String(CString strIn) { int nSize = ::WideCharToMultiByte(CP_ACP, 0, strIn, -1, NULL, 0, NULL, 0); char* pChar = (char*)malloc((nSize + 1) *
2017-11-01 09:27:15
744
原创 获取电脑的MAC地址
#pragma comment(lib,"Netapi32.lib") //网卡结构 typedef struct tagASTAT { ADAPTER_STATUS adapt; NAME_BUFFER NameBuff[30]; }ASTAT, *LPASTAT; //存储网卡的MAC地址的结构 typedef struct tagMAC_A
2017-11-01 09:14:25
1139
原创 windows进程间的通信
主要通过WM_COPYDATA消息接收其他进程发来的消息1,发送端进程代码void SendMessageToOtherWnd(char* pData) //参数可以是字符串,数组,结构体等{ if (NULL == pData || strlen(pData) <= 0) return -1; CWnd *pWnd = NULL; pWnd = CWnd:
2017-10-13 10:36:24
190
原创 观察者模式
程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。要求: 1.要有联动性,老鼠和主人的行为是被动的。 2.考虑可扩展性,猫的叫声可能引起其他联动效应。要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。 2. 对老鼠和主人进行抽象class Observer{public
2017-10-11 20:32:23
254
原创 获取一个ip地址所经过的所有网关
#include #include #pragma comment(lib,"iphlpapi.lib")vector GetAllTraceRouterIpAddr(string strTraceIp)//输入当前ip地址{ WSADATA wsa; vector vecRouterIpAddr; if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0
2017-09-30 15:25:29
2889
原创 如何判断IP地址是否合法
如何判断一个IP地址是否合法,以及如何判断一个IP地址是否在给定的IP地址范围内,废话不多说,上代码判断IP地址是否合法:bool isValidIP(char *ip){ if (ip == NULL) return false; char temp[4]; int count = 0; while (true) { int index = 0;
2017-09-22 09:53:15
9162
原创 C++如何读写注册表
1.如何向注册表中写值//写入注册表为DWORD类型bool SetRegValue(LPCTSTR lpSubKey, LPCTSTR lpValueName, DWORD dwValueKey){ bool bRet = false; HKEY hKey; DWORD dwDispoistion = REG_OPENED_EXISTING_KEY; if (ERROR_SUC
2017-09-14 20:21:52
1737
原创 boost库中线程的使用
线程一直被用来当并发地执行多个函数,开发人员现在不得不仔细地构建应用来支持这种并发。 多线程编程知识也因此在多核系统时代变得越来越重要。下面将介绍C++ Boost库 Boost.Thread,它可以开发独立于平台的多线程应用程序。在这个库最重要的一个类就是 boost::thread,它是在 boost/thread.hpp 里定义的,用来创建一个新线程。下面的示
2017-08-31 11:23:29
826
1
原创 static关键字的作用以及静态成员函数与非静态成员函数的区别
静态成员函数与非静态成员函数的区别:静态成员可以互相访问,非静态成员函数可以访问静态成员函数,静态成员函数不能访问非静态成员函数this指针:this指针属于类的一个实例,不属于某个类;由于静态成员函数并不属于某一个对象,属于类;由于它没有this指针,不能用this调用静态成员函数,也决定了静态成员函数不能访问本类中的非静态成员
2017-08-24 20:35:51
420
原创 C++中extern关键字的使用
在编写复杂程序时,会有许多文件,需要有在文件中分享代码的方法,例如,在一个文件中代码可能需要另一个文件中定义的变量,说白了也就是(分离式编译)。为了支持分离式编译,c++支持了将变量的定义和声明分开,即使用extern关键字,只对变量进行声明,如extern int a,变量a只声明未定义,在一个.h文件中声明一个全局变量,在其.cpp文件中定义此变量,在另一个文件中引用此变量,只需在.cpp
2017-08-18 14:53:08
281
原创 什么是线程同步与互斥,使用boost库实现线程同步
使用boost库实现线程的同步,下文主要讲解如何使用mutex,即互斥量来实现线程间的同步。在使用boost库实现线程同步之前,我们先了解一下下面的概念:对于互斥可以这样理解,线程A和线程B互斥访问某个资源则它们之间就会产个顺序问题——要么线程A等待线程B操作完毕,要么线程B等待线程操作完毕,这其实就是线程的同步了。因此同步包括互斥,互斥其实是一种特殊的同步。多
2017-08-18 09:47:00
476
原创 C++中指针和引用的区别
引用必须初始化,指针不必; 删除空指针是无害的,不能删除引用; 内存分配上,程序为指针变量分配内存区域,而引用不分配内存;(1)引用访问一个变量是直接访问, 而指针是间接访问; (2)引用是一个变量的别名,本身不单独分配自己的内存空间, 而指针有自己的内存空间,是实体 (3)引用在开始就绑定到了一个内存空间(开始必须赋初值),所有他只是该内存空间的别名,不能改成其他的;当
2017-08-09 17:16:43
299
原创 笔试题8——二进制中1的个数
方法1:int BitCount(unsigned int n){ int iCount = 0; while (n > 0) { if ((n & 1) == 1) ++iCount; n >>= 1; //n右移一位 } return iCount;}方法2:int BitCount(unsigned int n){
2017-08-08 20:46:12
275
原创 笔试题7——替换数组中的空格
给定一数组,将 空格 替换成 %20 ,要求时间复杂度为O(n)void ReplaceBlank(char string[], int length){ if (string == NULL && length <= 0) return; int oldlength = 0; int NumOfBlank = 0; int i = 0; while (string[
2017-08-08 09:54:34
383
原创 笔试题6——数组中2个出现一次的数(其他2次)
void FindTwoDiff(int a[], int n, int N1, int N2) { int i, j, temp; temp = 0; for (i = 0; i < n; i++) temp ^= a[i]; //此时temp为2个不同数的异或值 //找第一个为1的位 for (j = 0; j < sizeof(int) * 8; j
2017-08-07 21:01:26
261
原创 文件操作——将数据导出到Excel
将数据导出到Excel(.csv)表格中#include #include using namespace std;void CDuiFrameWnd::TestFileOut(){ OPENFILENAME ofn = { 0 }; ofn.lStructSize = sizeof(OPENFILENAME); TCHAR strFileName[MAX_PATH]
2017-08-02 16:38:06
970
原创 笔试题5——数组中超过一半的数
在O(n)的时间内找出数组中超过一半的数,如:3 4 2 3 5 3 3,数字3超过半数bool g_b = false; //全局变量用来判断是不是数组中的数int MoreThanHalfNum(int a[], int len){ bool b = false; if (a == NULL || len <= 0) { g_b = true; ret
2017-08-01 09:50:26
282
原创 虚函数的作用
在某基类中申明为virtual的成员函数,并在一个或多个派生类中被重新定义,通过指向派生类的指针或引用,访问派生类中同名覆盖的成员函数。简单的说:那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性面试1:除了指针能引起多态,还有什么能引起多态?这是面试的时候常问题目,引起多态方式有两种 :指针和引用面试2:重载,重写,覆盖
2017-07-28 15:09:19
1085
原创 笔试题4——数组中第二大的数
求数组中第二大的数,要求时间复杂度为O(n),即遍历一遍const int MinN = -32767;int FindSecMax(int data[], int iCount){ int iMaxNum = data[0]; int iSecMax = MinN; for (int i = 1; i < iCount; i++) { if (data[i] > iM
2017-07-27 16:58:55
379
原创 笔试题3——给定一个整形数组,使得奇数在偶数前面
这道题是厦门大学某一年的考研题,也是一道笔试时经常考的题目这道题类似于快速排序 第一趟排玩的结果,将数组分成前后两部分;我们用这种相似的方法解这道算法题void OddBeforeEven(int a[], int iLength){ if (a == NULL || iLength <= 1) return; int iStart = 0; int iEn
2017-07-25 21:11:18
560
原创 笔试题2——判断链表是否有环,若有则返回环的第一个交点
链表是常有的数据结构,也是笔试、面试常客如何判断一个链表是否有环;若有环,则环的第一个交点;找链表的倒数第k个节点;都是快慢指针的应用;下面给出这三个的实现方法(1)如何判断一个链表是否有环bool IsListR(LinkList* head){ LinkList*pS = head; //慢指针 LinkList*pF = head
2017-07-25 10:21:35
379
原创 文件的相对路径和绝对路径,加载资源文件失败
(1)文件的绝对路径:是从盘符开始的路径,形如 D:\vs2015项目\images\123.png(2)相对路径:是从当前路径开始的路径,假如当前路径为D:\vs2015项目要描述上述路径,只需将代码中的路径参数(一般string类型)传入images\123.png 即可实际上,严格的相对路径写法应为.\imag
2017-07-24 17:07:49
3012
原创 const关键字的用法
被const修饰的成员变量有以下几个特点:1、只能被读2,、必须初始化3、在另一文件中引用const常量 extern const int i;4,、能够进行类型安全检查5、只分配一次内存(和define关键字修饰的变量的区别) const char s[] = "abc" //只分配一次 不像def
2017-07-21 20:58:21
270
原创 智力题——桌子上轮流放置硬币怎样才能赢得游戏的胜利
给一张对称的桌子,和足够的硬币,将硬币放在桌子上(硬币不能叠加)!你和对手轮流放置硬币于桌面上,谁的硬币先掉下桌子,谁就输了!那么如果让你先放置硬币怎样才能稳赢?这道智力题是我在甲骨文(oracle)面试的时候,面试官提的一道智力题。当时面试的时候没有想出来,后来回去的路上,楼主思考了一番,还是想出来了,不过此时心情也没那么美好了- -大家先自己想想怎样放置才能稳操
2017-07-20 20:43:21
5321
原创 笔试题1——找到字符串中第一个只出现一次的那个字符
哈希表的应用,此题面试官主要考察的字符查找的时间效率,算法的时间复杂度为O(n),那么恭喜你通过此次笔试#define tableSize 256 //哈希表的大小,因为char占一个字节,最多能表示256个字符。char FindFirstCharAppearOnce(char* pString){ if (NULL == pString) //输入不合法
2017-07-20 15:24:09
3303
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人