随笔分类 - C++
摘要:正确释放Vector等STL的内存执行 clear() 之后内存并没有释放 《Effective STL》给出的解决方案是: vector<type> v;//.... 这里添加许多元素给v//.... 这里删除v中的许多元素 vector<type>().swap(v);//此时v的容量已经尽可能
阅读全文
摘要:从vs2010sp1和vs2013开始就已经支持UTF-8的源码文件了,只用在工程里加入一句"#pragma execution_character_set("UTF-8")"即可 #pragma execution_character_set("UTF-8")
阅读全文
摘要:#include //判断文件夹是否存在 #include //创建文件夹 //创建本地目录 int createDir(const char* localPath ) { if(0 == _access(localPath,0)) //判断文件夹是否存在 return 0; if(0 != _mkdir(localPath) ...
阅读全文
摘要:#include #include #include inline std::string loadFileEx(const char* path) { setlocale(LC_ALL,"Chinese-simplified");//设置环境中文 std::ifstream ifs(path); setlocale(LC_ALL,"C");//还原环境 r...
阅读全文
摘要:介绍:对Windows系统服务的状态获取,服务暂停,开启,停止操作代码
阅读全文
摘要:内存管理是C++程序员的痛。我的《内存管理变革》系列就是试图讨论更为有效的内存管理方式,以杜绝(或减少)内存泄漏,减轻C++程序员的负担。由于工作忙的缘故,这个系列目前未完,暂停。这篇短文我想换个方式,讨论一下如何以最快的速度找到内存泄漏。1、确认是否存在内存泄漏我们知道,MFC程序如果检测到存在内...
阅读全文
摘要:三个SDK函数 winexec, shellexecute,createprocess可以使用。WinExec 最简单,两个参数,前一个指定路径,后一个指定显示方式.后一个参数值得说一下,比如泥用 SW_SHOWMAXMIZED 方式去加栽一个无最大化按钮的程序,呵呵就是Neterm,calc 等等...
阅读全文
摘要://截图int cropImage(const char* file, int left, int top, int right, int bottom, BYTE* &dstData, DWORD& dstLen){ DWORD dw1 = GetTickCount(); fipIma...
阅读全文
摘要:http://www.cnblogs.com/egmkang/archive/2012/11/17/2763295.html 生产者消费者问题,是永远的经典. 单纯让多个线程去竞争,占有资源然后处理,会让系统的复杂度变得相当复杂,并且整个系统的并发也很难控制.为了让系统简单化,流畅化,引入消息队...
阅读全文
摘要:我们所能想到的最简单的消息队列可能就是使用stl的list来实现了,即消息队列内部维护一个list和一个互斥锁,putMessage时将message加入到队列尾,getMessage时从队列头取一个message返回,同时在getMessage和putMessage之前都要求先获取锁资源。 ...
阅读全文
摘要://CxImage叠加字符void CCxImageTestDlg::OnBnClickedButton1(){ CxImage imgJPG; // 定义一个CxImage对象 imgJPG.Load("1.jpg", CXIMAGE_FORMAT_JPG); //先装载jpg...
阅读全文
摘要:#include "sphelper.h"#include "sapi.h"#pragma comment(lib, "sapi.lib")int CtestMFCDlg::testTTS(TCHAR* szWords){ if ( NULL == szWords || 0 == szWord...
阅读全文
摘要:#define WIN32_LEAN_AND_MEAN#include
阅读全文
摘要:static char buffer[1024] = {0};inline void G_Log(const char* message,...){ va_list argp; va_start(argp,message);#ifdef _WIN32 _vsnprintf ((char*) buffer, sizeof (buffer) / sizeof (char), (const char*)message, argp) ;#else vsnprintf ((char*) buffer, sizeof (buffer) / sizeof (char...
阅读全文
摘要:#include #include #if defined(WIN32)||defined(WINCE)||defined(WIN64)#include #else#include #endifstd::string GetUUID(std::string& strUUID){ strUUID = "";#if defined(WIN32)||defined(WINCE)||defined(WIN64) GUID guid; if ( !CoCreateGuid(&guid) ) { char buffer[64] = {0}; _snpr...
阅读全文
摘要:// 替换路径中所有“\”为“/”#include static std::string ConvertSlash(std::string& strUrl){ //size_t nLen = strlen(strPicTruePathBuff); //for (size_t i = 0 ; i < nLen; i++) //{ // if (strPicTruePathBuff[i] == '\\') // strPicTruePathBuff[i] = '/'; //} std::replace(strUrl.begin(), strU...
阅读全文
摘要:http://blog.csdn.net/m_star_jy_sy/article/details/84822021)‘_wcsicmp’在此作用域中尚未声明#ifdef WIN32#define _tcsicmp _wcsicmp#else#define _tcsicmp wcscasecmp#endif2)_stricmp 在此作用域中尚未声明#include 将_stricmp改成strcasecmp3)atoi的wchar版本不存在,#define _ttoi _wtoi改成使用#define _tcstol wcstol4)_atoi6...
阅读全文
摘要:#include #include void test(){ std::string strA="QQQQWWWqqqqqqwwwwwww; //std::string的大小写转换 transform(strA.begin(), strA.end(), strA.begin(), ::toupper); transform(strA.begin(), strA.end(), strA.begin(), ::tolower);}
阅读全文
摘要:DLL延时加载鉴于静态和动态加载之间,即无需在代码中显示加载但它内队依然是动态加载的方式只是系统帮处理了。这样做好处是: 1. 可以加快启动时间(因为它是动态加载在需要的时间加载), 2. 减小编写LoadLibrary, GetProcAddress 而像静态库函数一样直接使用. 但他的不足或者...
阅读全文
摘要:CFile file;file.Open(strName, CFile::modeWrite|CFile::modeNoTruncate|CFile::modeCreate);if( file.GetLength() !=0 ){ file.SeekToEnd(); file.Write("\r\n",strlen("\r\n"));//换行}file.Write(strValue.GetBuffer(), strValue.GetLength());file.Close();
阅读全文