实用函数
BombZhang
这个作者很懒,什么都没留下…
展开
-
执行一条DOS命令,并返回打印在控制台的消息
bool RunDOSCommand(const std::string &strCmd, std::string &strRet){ SECURITY_ATTRIBUTES sa = { 0 }; STARTUPINFOA si = { 0 }; PROCESS_INFORMATION pi = { 0 }; HANDLE hPipeOutputRead = INVALID_HANDLE_VALUE; HANDLE hPipe.原创 2020-11-22 15:17:56 · 534 阅读 · 1 评论 -
VC从Multi Byte字符串转换为UNICODE字符串的函数
wchar_t *FromANSIToUNICODE(char *pData){ int nLength = MultiByteToWideChar(CP_ACP, 0, pData, - 1, NULL, 0); wchar_t *pwBuffer = new wchar_t[nLength + 1]; memset(pwBuffer,0,sizeof(wchar_t)*(nLengt原创 2012-04-23 11:13:18 · 880 阅读 · 0 评论 -
从UNICODE字符串转换为Multi Byte字符串的函数
char *Convert2ANSIString(CString strSource){ if(strSource.IsEmpty()) return NULL; char *pBuffer=NULL; int nBufferSize=0;#ifdef _UNICODE nBufferSize=WideCharToMultiByte(CP_ACP,0,(LPCTSTR)strSour原创 2012-04-23 11:09:23 · 1302 阅读 · 0 评论 -
VC一个可以catch数据库错误消息和其他错误消息的宏
参数b是显示catch到的错误后的后续处理代码参数c是数据库连接指针_ConnectionPtr的对象,用于捕捉数据库错误消息其中用到的下面两个函数,见本专栏其他文章。GetProviderError(_ConnectionPtr)GetComError(_com_error &e)#define MYCATCH(b,c) \ catch(const _co原创 2012-04-06 11:40:13 · 2343 阅读 · 0 评论 -
VC UTF-8转换到Unicode的函数
short Utf8TextBytes (const unsigned char *mstr){ short textbytes = 0; if (mstr == 0) { //Returns 0 if mstr contains a null string or if there is return 0原创 2012-05-08 16:34:06 · 3409 阅读 · 0 评论 -
VC Unicode编码转换为UTF8编码的函数
utf8Str --UTF8 dest code utf8strlen --max utf8 length unStr -- Unicode Str Source unMaxlen --Unicode 最大个数 return : --实际转换的长度short FromUnicodeToUTF8 (LPSTR utf8Str原创 2012-05-08 16:39:19 · 2123 阅读 · 0 评论 -
VC从“我的电脑”开始浏览文件夹
直接上函数:BOOL BrowseDir(CString &strDir, CString strTitle, int nImgID){ BROWSEINFO bi; TCHAR Buffer[MAX_PATH]; LPITEMIDLIST pidl = NULL; SHGetSpecialFolderLocation(NULL, CSIDL_DRIVES, &pidl); b原创 2014-12-22 16:13:45 · 869 阅读 · 0 评论 -
VC格式化输出字符串
CString的Format不能直接返回CString,用起来不那么方便,于是写了个小函数,如下:CString FormatString(LPCTSTR pstrFormat, ...){ CString strResult; va_list args; va_start(args, pstrFormat); strResult.FormatV(pstrFormat, args)原创 2014-12-22 16:23:28 · 4194 阅读 · 0 评论 -
C# 删除指定文件夹内的所有空文件夹,包括空的子文件夹
void DeleteEmptyFolders(string parentFolder) { var dir = new DirectoryInfo(parentFolder); var subdirs = dir.GetDirectories("*.*", SearchOption.AllDirectories);...原创 2019-04-03 11:51:35 · 910 阅读 · 0 评论 -
C# 删除文件夹中指定天数之前的旧文件
/// <summary> /// 删除文件夹strDir中nDays天以前的文件 /// </summary> /// <param name="dir"></param> /// <param name="days"></param> ...原创 2019-04-03 12:00:23 · 7039 阅读 · 0 评论 -
字符串分割函数(C++版本)
std::vector<std::string> StringSplit(const std::string &strSrc, const std::string &strSpliter){ std::vector<std::string> resultVec; resultVec.reserve(10); std::basic...原创 2019-08-23 13:05:50 · 269 阅读 · 0 评论 -
VC查看某IP是否可以ping通
BOOL CheckIPReachable(LPCTSTR strIPAddress){ char strIP[100];#ifdef UNICODE WideCharToMultiByte(CP_ACP,0,strIPAddress,(int)_tcslen(strIPAddress)+1,strIP,sizeof(strIP)/sizeof(char),NULL,NULL);#el原创 2012-04-06 11:50:07 · 4589 阅读 · 0 评论 -
VC获取数据库ADO错误消息
CString GetProviderError(_ConnectionPtr pConnection){ CString sErrors; if(pConnection != NULL) { ADODB::ErrorsPtr ptrErrors = pConnection->Errors; long lCount = ptrErrors->Count; ADODB::Erro原创 2012-04-06 11:32:57 · 2575 阅读 · 0 评论 -
VC获取Com错误消息
CString GetComError(const _com_error& e){ CString sMsg; sMsg.Format( _T("HRESULT: 0x%08lx; Error: %s"), e.Error(), e.ErrorMessage() ); if(e.ErrorInfo()) { sMsg += TEXT("\nSource: ") +原创 2012-04-06 11:33:59 · 1578 阅读 · 0 评论 -
分割字符串(CString版本)
//根据多个分隔符来分割字符串source 源串seprator分隔符count分割后的子串数量返回值:分割后的子串CString* ExtractStr(LPCTSTR source, LPCTSTR seprator, int *count){ int iSubStringCount,nIndex=0; CString strSource=source原创 2012-02-03 15:20:17 · 6803 阅读 · 1 评论 -
VC获取错误消息
CString GetSystemErrorMessage(){ CString strRet; LPVOID lpMsgBuf; DWORD dw = GetLastError(); FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,NULL,dw,GetSystemDefaultLangI原创 2012-02-03 16:09:28 · 691 阅读 · 0 评论 -
VC获取当前应用程序路径
CString GetSystemDir(){ static bool bAlreadyGet = false; static CString strDir; TCHAR strSystemDir[MAX_PATH]; if(!bAlreadyGet) { memset(strSystemDir, 0, MAX_PATH*sizeof(TCHAR)); GetModuleFi原创 2012-02-03 16:11:05 · 752 阅读 · 0 评论 -
VC获取电脑上所有串口
BOOL GetSystemSerialComport(CArray &comarray){ HKEY hKey=NULL; comarray.RemoveAll(); if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"),0,KEY_READ,&hKey)!=ERROR_SUCCESS)原创 2012-02-03 16:13:17 · 5985 阅读 · 1 评论 -
计算MEID校验位的算法函数
TCHAR CalcMEIDCheckDigit(CString strMEIDHex){ if(strMEIDHex.GetLength()!=14 && strMEIDHex.GetLength()!=15) return 0; int nTotal=0; //先累加奇数位数字 for(int i=0;i<14;i+=2) { nTotal+=_tcstoul(strMEID原创 2012-02-07 15:02:54 · 3762 阅读 · 2 评论 -
计算IMEI校验位的算法函数
TCHAR GetIMEICheckDigit(LPCTSTR imei){ int i; int sum1=0,sum2=0,total=0; int temp=0; for( i=0; i<14; i++ ) { if((i%2)==0) { sum1 = sum1 + imei[i] - '0'; } else { temp = (i原创 2012-02-07 15:09:14 · 5045 阅读 · 4 评论 -
分割字符串(C版本)
//获取指定字符在字符串中出现次数int GetCharOccurrence(char *strSource,char cDivider){ if(strSource==NULL) return 0; int nCount=0; char *pStart=strSource; char* pDividerPos = strchr( pStart, cDivider); while(p原创 2012-02-03 15:58:22 · 1158 阅读 · 0 评论 -
计算两个整数区间是否重叠的算法函数
//计算两个整数区间是否重叠typedef struct { int a,b;}Interval;BOOL CheckIntersect(Interval IntervalA,Interval IntervalB){ int a=IntervalA.a-IntervalB.a; int b=IntervalA.a-IntervalB.b; int c=IntervalA.b-原创 2012-02-03 17:23:17 · 1461 阅读 · 0 评论 -
MEID 16进制和10进制格式转换函数
16进制格式转换为10进制格式:CString ConvertMEIDHex2Dec(CString strMEIDHex){ if(strMEIDHex.GetLength()!=14 && strMEIDHex.GetLength()!=15) return TEXT(""); CString strRet,strTemp; strTemp.Format(TEXT("%u"),_原创 2012-02-07 15:06:44 · 4351 阅读 · 2 评论 -
计算组合的算法
长度为nNum的整数数组pGroups,计算从pGroups中选取nSelNum个元素的组合,放到pRes中不同组合个数TotalNum由函数CalCombNum(a,b)计算,pRes长度为TotalNum*nSelNumvoid CalCombination(int *pGroups, int nNum, int nSelNum,int *pRes){ nSelNum=(nSelN原创 2012-03-30 14:13:38 · 832 阅读 · 0 评论 -
C/C++/VC 获取指定字符在字符串中的出现次数
int GetCharOccurrence(char *strSource,char cDivider){ if(strSource==NULL) return 0; int nCount=0; char *pStart=strSource; char* pDividerPos = strchr( pStart, cDivider); while(pDividerPos) {原创 2012-02-03 16:00:35 · 3876 阅读 · 0 评论