
C/C++
文章平均质量分 87
mpp_king
收藏夹会持续收藏一些自己觉得不错的文章,大家一起学习。
展开
-
CFileFind用法总结
点击打开原文地址CFileFind用法总结:头文件:afx.h功能:本地文件查找具体类型文件:.格式,例如:.pdf:查找.pdf文件所有 文件:.CFileFind类的构造函数::CFileFind()和关闭函数::Close(),成对使用。成员函数根据操作特性分成三类:查找操作类、获得文件属性类和判断文件属性类。(1) 查找操作类:::FindFile():...转载 2019-04-04 10:32:59 · 1634 阅读 · 0 评论 -
CreateThread与_beginthreadex本质区别
点击打开原文链接一、预热:下面这个程序的主线程会创建了一个子线程并等待其运行完毕,子线程就输出它的线程ID号然后输出一句经典名言——Hello World。整个程序的代码非常简短,只有区区几行。//最简单的创建多线程实例#include <stdio.h>#include <windows.h>//子线程函数DWORD WINAPI ThreadFun...转载 2019-04-04 10:08:27 · 346 阅读 · 0 评论 -
string、char *、char[] 相互转换转换
点击打开原文链接一、string 转 char*主要有三种方法可以将 str 转换为 char* 类型,分别是:data(); c_str(); copy;1、data() 方法:string str = "hello world";const char *p = str.data(); //加const 或用 char *p = (char*)str.data(); 的形式...转载 2019-03-23 12:07:43 · 61830 阅读 · 4 评论 -
#include 出错
点击打开原文链接xxx\GdiPlusImaging.h(67) : error C2501: “MIDL_INTERFACE” : 缺少存储类或类型说明符xxx\GdiPlusImaging.h(67) : error C2440: “初始化” : 无法从“const char [37]”转换为“int”该转换要求 reinterpret_cast、C 样式转换或函数类型...转载 2019-03-26 09:51:53 · 1132 阅读 · 0 评论 -
整型数组转字符串
int d[5]={4,5,3,2,5}; char a[80]; int i; for(i=0;i<5;i++) { a[i]=d[i]+'0'; } a[i]='\0'; //这个很重要,是字符串结束符 printf("%s\n",a);原创 2019-03-22 17:54:33 · 4702 阅读 · 0 评论 -
WString与String互相转换
点击打开原文链接std::wstring StringToWString(const std::string& str) { int num = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0); wchar_t *wide = new wchar_t[num]; MultiByteToWid...转载 2019-03-22 13:39:57 · 545 阅读 · 0 评论 -
有符号/无符号不匹配
点击打开原文地址出错代码: for(int j=0;j<detector.size();j++)出错原因分析: detector 是一个Vector容器 ,detecot.size() 在容器说明中 被定义为: unsigned int 类型, 而j是int 类型 所以会出现: 有符号/无符号不匹配警告错误改正: 定义j为unsigned类型后就可以了即: for(unsigned i...转载 2018-09-30 09:45:47 · 2368 阅读 · 0 评论 -
C++ 正则表达式 判断字符串是否是字母或数字
头文件#include <regex>程序tr1::regex reg("^[0-9a-zA-Z]+$");string search_string="AsWamplek3fj123";bool bValid=tr1::regex_match(search_string, reg);返回值为TRUE原创 2018-09-10 20:03:42 · 9008 阅读 · 0 评论 -
防止MFC应用程序重复打开
点击打开原文链接在APP类的InitInstance()的最前面加入以下代码,建立互斥区,可防止进程的重复启动。 BOOL CReadOracleDBApp::InitInstance() { HANDLE hObject = CreateMutex(NULL,FALSE,_T("CReadOracleDBApp")); if(GetLastError() == ERROR_...转载 2018-07-31 16:00:44 · 1287 阅读 · 0 评论 -
C++删除某个特定的进程
点击打开原文链接总结一个删除某个进程的函数,实现类似于在任务管理器中关闭某个进程的功能。 引用头文件:#include <TlHelp32.h>BOOL KillProcessFromName(CString strProcessName) { //创建进程快照(TH32CS_SNAPPROCESS表示创建所有进程的快照) HANDLE hSnapSho...转载 2018-05-08 15:47:17 · 567 阅读 · 0 评论 -
子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。
#include <Windows.h>#include <iostream>#include <process.h>UINT __stdcall ThreadFun(LPVOID lparam);CRITICAL_SECTION gVar;int gMain = 0;int gThread = 0;int main(){ Initial...原创 2018-04-26 19:23:53 · 320 阅读 · 0 评论 -
ShellExecuteEx调用第三方程序
点击打开原文链接调用第三方程序有很多方法, 包括system , WinExec , CreateProcess, ShellExecute, ShellExecuteEx。对比这几个启动进程的函数, 总结下来功能完善而且好用的就是ShellExecuteEx函数了。 这个函数不仅可以传入参数到第三方而且能够传回进程句柄用于操作, 比如等待第三方程序执行完毕。 CreateProcess也可以做到...转载 2018-05-04 14:19:31 · 5963 阅读 · 1 评论 -
error C2065: “CString”: 未声明的标识符
点击打开原文链接在非mfc下 使用CString 会导致上面错误:解决办法:(1) 如果你使用VC.net那么:使用MFC:包含cstringt.h;(2) 不使用MFC:包含atlstr.h 或者 #include <afx.h>...转载 2018-05-04 14:09:36 · 1867 阅读 · 0 评论 -
LoadLibrary函数详细说明
点击打开原文链接1、作用:将指定的模块加载到调用进程的地址空间中。2、使用语法HMODULE WINAPI LoadLibrary( _In_ LPCTSTR lpFileName);3、参数lpFileName:模块的名称。这可以是库模块(.dll文件)或可执行模块(.exe文件)。指定的名称是模块的文件名,与模块定义(.def)文件中的LIBRARY关键字所指定...转载 2019-04-04 13:30:53 · 4540 阅读 · 0 评论 -
string 转为char* 作为函数参数回传后变成空字符串
int ReturnPoint(char* pStr){ string temp = "hello"; //是一个临时变量,函数结束时,就会被释放 //第一种方法 pStr = (char*)temp.c_str(); //pStr最后指向的内容是乱值,因为temp对象被析构,其内容被处理 //第二种方法 strcpy(pStr,(char*)temp.c_str()); /...原创 2019-03-23 16:25:26 · 2302 阅读 · 1 评论 -
WritePrivateProfileString等读写.ini配置文件
点击打开原文链接1、写入.ini文件:BOOL WritePrivateProfileString( LPCTSTR lpAppName, // INI文件中的一个字段名[节名]可以有很多个节名 LPCTSTR lpKeyName, // lpAppName 下的一个键名,也就是里面具体的变量名 LPCTSTR lpString, // 键值,也就是数据 LPCT...转载 2019-04-04 13:45:45 · 520 阅读 · 0 评论 -
正确调用DLL时,依然出现无法解析外部文件
C++开发时,正确调用外部DLL时,出现无法解析外部文件的错误,可能的原因:接口文件中存在以下代码#ifdef EXPORT_STDCALL#define CALL_STACK __stdcall#else#define CALL_STACK __cdecl#endif“属性” - “C/C++” - "预处理器" - "预处理器定义" 内添加 :EXPORT_STDCALL...原创 2019-07-20 15:37:07 · 1306 阅读 · 0 评论 -
string 转换为 LPCWSTR
LPCWSTR stringToLPCWSTR(std::string orig) { size_t origsize = orig.length() + 1; size_t convertedChars = 0; wchar_t *wcstring = (wchar_t *)malloc(sizeof(wchar_t)*(orig.length()-1)); mbstowc...原创 2019-04-23 10:58:34 · 602 阅读 · 1 评论 -
获取dll所在路径
string GetPath() { string dllPath; TCHAR tcFullPath[MAX_PATH]; char* pChPath = new char[MAX_PATH]; memset(pChPath,'\0',MAX_PATH); GetModuleFileName(::LoadLibrary(L"动态库名称.dll"),tcFullPath,...原创 2019-04-22 14:58:46 · 1116 阅读 · 0 评论 -
线程中CreateEvent和SetEvent及WaitForSingleObject的用法
点击打开原文链接一、CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,线程锁定方面.EVENT有两种状态:发信号,不发信号。SetEvent:将EVENT置为发信号。ResetEvent:将EVENT置为不发信号。WaitForSingleObject():等待,直到参数所指定的OBJECT成为发信号状态时才返回,OBJECT可以是EVENT...转载 2019-04-03 17:35:19 · 796 阅读 · 0 评论 -
DeleteDC() 与 ReleaseDC() 的区别
点击打开原文链接DeleteDC该函数删除指定的设备上下文环境(DC)。原型:BOOL DeleteDC(HDChdc);参数:hdc:设备上下文环境的句柄。返回值:成功,返回非零值;失败,返回零。调用GetLastError获取扩展错误信息。说明:如果一个设备上下文环境的句柄是通过调用GetDC函数得到的,那么应用程序不能删除该设备上下文环境,它应...转载 2019-04-03 16:30:12 · 835 阅读 · 0 评论 -
m_hWnd和this指针
点击打开原文链接一、m_hWnd1、m_hWnd这个成员变量最早是定义在类CWnd中,而且是类CWnd的第一个数据成员。它是窗口类的一个句柄,凡是从CWnd派生的类都有这个句柄,凡是以CWnd派生的类定义的对象内部也都有这个句柄,它是类或者对象标识自己的句柄。凡是窗口都有一个句柄用来标识自己,在CWnd类中将这个句柄作为一个成员变量直接封装了,所以CWnd类的成员函数都没有句柄这个参数...转载 2019-04-03 16:00:09 · 431 阅读 · 0 评论 -
签名,验签的理解
点击打开原文链接一、公钥加密假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用。数字2,就是我的私钥,来解密。这样我就可以保护数据了。例如:我的好朋友x用我的公钥1加密了字符a,加密后成...转载 2019-04-09 11:13:04 · 403 阅读 · 0 评论 -
获取打印机设备环境DC的方法
点击打开原文地址转载 2019-04-09 09:56:41 · 896 阅读 · 0 评论 -
new对象时,类名后加括号与不加括号的区别
点击打开原文链接#include <iostream>using namespace std;// 空类class empty{};// 一个默认构造函数,一个自定义构造函数class Base{public: Base() { cout << " default Base construct " <&l...转载 2019-04-01 09:59:35 · 1341 阅读 · 0 评论 -
Unicode 和 UTF-8 有何区别?
点击打开原文链接简单来说: Unicode 是「字符集」 UTF-8 是「编码规则」其中: 字符集:为每一个「字符」分配一个唯一的 ID(学名:码位 / 码点 / Code Point) 编码规则:将「码位」转换为字节序列的规则(编码/解...转载 2019-03-31 17:19:10 · 257 阅读 · 0 评论 -
WideCharToMultiByte和MultiByteToWideChar函数的用法
点击打开原文链接辅助链接WideCharToMultiByte的代码页用来标记与新转换的字符串相关的代码页。MultiByteToWideChar的代码页用来标记与一个多字节字符串相关的代码页。常用的代码页有CP_ACP和CP_UTF8两个。使用CP_ACP代码页就实现了ANSI与Unicode之间的转换。使用CP_UTF8代码页就实现了UTF-8与Unicode之间的转换。...转载 2019-03-31 15:54:33 · 309 阅读 · 0 评论 -
MFC中Invalidate() 和UpdateWindow()的用法
点击打开原文链接Invalidate()是强制系统进行重画,但是不一定就马上进行重画。因为Invalidate()只是通知系统,此时的窗口已经变为无效。强制系统调用WM_PAINT,而这个消息只是Post,就是将该消息放入消息队列,当执行到WM_PAINT消息时才会对窗口进行重绘;UpdateWindow向窗体发送WM_PAINT消息,在发送之前判断GetUpdateRect(hWnd,...转载 2019-04-04 15:17:17 · 2312 阅读 · 0 评论 -
一个全局变量tally,两个线程并发执行(代码段都是ThreadProc),问两个线程都结束后,tally取值范围。
点击打开原文链接代码:int tally = 0;//glablevoid ThreadProc(){ for(int i = 1; i <= 50; i++) tally += 1;}答案:[50,100]解析:tally += 1 分为三条指令:(1)tally内存进入寄存器;(2)寄存器加1;(3)寄存器数据放回内存tally;...转载 2018-04-26 14:15:34 · 3402 阅读 · 0 评论 -
VS2008 C++ 获取exe文件所在路径
TCHAR szFilePath[MAX_PATH + 1] = { 0 };GetModuleFileName(NULL, szFilePath, MAX_PATH);(_tcsrchr(szFilePath, _T('\\')))[1] = 0;TCHAR转换为char*:char* ConvertLPWSTRToLPSTR (LPWSTR lpwszStrIn) { LPSTR...原创 2018-05-04 09:39:23 · 722 阅读 · 0 评论 -
贪心算法_活动选择问题
/* 活动选择问题*这是《算法导论》上的例子,也是一个非常经典的问题。有n个需要在同一天使用*同一个教室的活动a1,a2,…,an,教室同一时刻只能由一个活动使用.要安排这些活*动使得尽量多的活动能不冲突的举行 */#include #include #include using namespace std;int N; //声明全局变量Nstruct Act //定原创 2017-09-25 16:12:49 · 969 阅读 · 2 评论 -
科大讯飞笔试题
/* 题目描述:有 n 个人排成了一行队列,每个人都有一个站立的方向:面向左或面向右。由于这 n 个人中每个人都很讨厌其他的人,所以当两个人面对面站立时,他们会发生争吵,然后其中一个人就会被踢出队列,谁被踢出队列都是有可能的。我们用字符 L 来表示一个面向左站立的人,用字符 R 来表示一个面向右站立的人,那么这个队列可以用一个字符串描述。比如 RLLR 就表示一个四个人的队列,其中第一个人原创 2017-09-17 00:22:08 · 1092 阅读 · 0 评论 -
sort()函数
1、升序#include #include #include using namespace std;int main(){ int i; int a[20] = {2,4,1,23,5,76,0,43,24,65}; //输入数组 for(i=0;i<20;i++) cout<<a[i]<<' '; //打印原始数组元素 cout<<endl;原创 2017-09-25 10:32:24 · 614 阅读 · 0 评论 -
输入一个链表,从尾到头打印链表每个节点的值
/*输入一个链表,从尾到头打印链表每个节点的值 */#include #include #include using namespace std;typedef struct List{ int node; List *next;}Node,*linkList;linkList linkListCreat(){ //链表初始化 Node* L = (Node*)m原创 2017-09-23 12:17:30 · 1115 阅读 · 0 评论 -
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
class Solution {public: bool Find(int target, vector array) { int rowCount = array.size(); int colCount = array[0].size(); int i,j; for(int i=rowCount-1,j=0; i>=0&&j<colCount; ) { if(target == array[i原创 2017-09-12 09:44:26 · 247 阅读 · 0 评论 -
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
一:int main(){ char arr[50] = "We are happy."; int arrLen = strlen(arr); int blankNum = 0; for (int i=0;i<arrLen;i++) { if (arr[i] == ' ') blankNum++; } int len = arrLen + 2*blankNum;原创 2017-09-15 10:59:23 · 423 阅读 · 0 评论 -
宏定义:得到一个field在结构体(struct type)中的偏移量
//OFFSETOF(s, m)的宏定义,s是结构类型,m是s的成员,求m在s中的偏移量。#define OFFSET(s, m) ((size_t) &((s *)0)->m)转自:http://hi.baidu.com/tian_20032242/blog/item/77fd7afa5ffcc29d59ee90ba.html#define OFFSETOF(转载 2017-08-18 09:22:01 · 511 阅读 · 0 评论 -
结构体定义 typedef struct 用法详解和用法小结
typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。具体区别在于:若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n;若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n;区别就在于使用时,是否可以省去str转载 2017-04-18 15:46:44 · 209174 阅读 · 12 评论 -
【OpenCV学习笔记】2.2基本操作及函数
1.Roi和widthStep两者有很重要的作用,即提高计算机视觉代码的执行速度,因为她们允许对图像的一小部分进行操作,而不是整个图像。设置ROI: void cvSetImageROI(IplImage*image,CvRect rect);取消ROI:void cvResetImageROI(IplImage*image); 以下代码内容:加载一幅图像并设置了想要的ROI区转载 2016-12-15 10:16:45 · 869 阅读 · 0 评论 -
【OpenCV学习笔记】2.1OpenCV基本数据类型
OpenCV提供了多种基本数据类型。虽然这些数据类型在C语言中不是基本类型,但结构都很简单,可将它们作为原子类型。可以在“…/OpenCV/cxcore/include”目录下的cxtypes.h文件中查看其详细定义。数据类型中最简单的就是CvPoint。CvPoint是一个包含integer类型成员x和y的简单结构体。CvPoint有两个变体类型:CvPoint2D32f和CvPoi转载 2016-12-15 09:37:18 · 935 阅读 · 0 评论