C++
文章平均质量分 61
Jacky_Dai
自信开朗,充满活力
展开
-
获取系统时间(Time)的方法
[code="c++"]void GetTime_Case_1(){// #include // #include //方案— :能精确到毫秒级并且使用简洁方便;SYSTEMTIME cTime; //获取系统时间类 CString TimeString; //转换 char cBuffer[100] = {0};GetLocalTime(&cTime)...2009-03-19 14:15:00 · 572 阅读 · 0 评论 -
Windows Template Library (WTL)相关资料学习
初识WTL(上) 作者:orange 下载本文示例工程 1.前言 虽然MFC的功能很强大,但Windows Template Library(WTL)的出现,无疑说明了MFC有一定的弊病。和MFC相比,功能并没有MFC完善。比如MF...2008-10-13 16:32:00 · 765 阅读 · 0 评论 -
[C++][STL] C++ STL 之 List
[b]List[/b] [b]双向链表[/b] 每一个结点都包括一个信息快Info、一个前驱指针Pre、一个后驱指针Post。可以不分配必须的内存大小方便的进行添加和删除操作。使用的是非连续的内存空间进行存储。 优点:(1) 不使用连续内存完成动态操作。 (2) 在内部方便的进行插入和删除操作 (3) 可在两端进行push、pop...2010-06-16 17:54:15 · 191 阅读 · 0 评论 -
转:内联函数与宏定义
参考[url]http://blog.sina.com.cn/s/blog_7003af290100scir.html[/url]inline函数是C++引入的机制,目的是解决使用宏定义的一些缺点。[color=red][b]1.为什么要引入内联函数(内联函数的作用)[/b][/color] 用它替代宏定义,消除宏定义的缺点。宏定义使用预处理器实现,做一些简单的字符替换因此不能进...原创 2011-01-11 15:31:43 · 266 阅读 · 0 评论 -
宏(#define)定义函数妙用
关于这宏定义函数的用法,现在不是特别常见,但是在特殊情况下还是很有用的。定义如下:[code="c++"]class StringBuilder{public: StringBuilder(const char8_t* str); virtual ~StringBuilder(); ... virtual StringBuilde...原创 2011-01-11 15:42:43 · 789 阅读 · 0 评论 -
报文传输中的进制转换(十六进制、二进制)
昨天一个偶然机会,看到一篇文章,是关于C++ socket server和client传输报文的。 然后就联想到以前做的报文传输,就联想到把十六进制流转换为二进制制流进行传输,最大的好处就是减少网络传输 的负载。 例如,”1234ab“字符串一般存储占用6个byte,可是转换为 0x12 0x34 0xab,这样就只需要3个byte,一样达到 预期的效果,现在...2011-01-13 16:30:29 · 3139 阅读 · 0 评论 -
[C++][Casting] C++ 四种 cast使用
[url]http://www.cnblogs.com/yawer/archive/2007/11/27/973909.html[/url]dynamic_cast—多态类型的转化 表达式:dynamic_cast(expression)把操作数expression转化为一个type-id对象。type-id必须是一个指针或者是一个引用。如果type-id是一个指针,那么expres...原创 2011-06-07 15:38:01 · 254 阅读 · 0 评论 -
[转载]windows核心编程--内存映射文件
[url]http://www.cppblog.com/mzty/archive/2006/09/21/12790.html[/url]与虚拟内存一样,内存映射文件可以用来保留一个地址空间的区域,并将物理存储器提交给该区域。它们之间的差别是,物理存储器来自一个已经位于磁盘上的文件,而不是系统的页文件。一旦该文件被映射,就可以访问它,就像整个文件已经加载内存一样。内存映射文件可以...原创 2011-06-12 17:09:14 · 111 阅读 · 0 评论 -
[C++][经验总结]vectory迭代器(iterator)失效
在我们所熟悉的STL中,vector有自己的一套分配策略。1)当vector被创建的时候,vector会根据用户的设置进行分配内存;通常申请的内存空间是制定值的两倍;2)当vector插入数据的时候,如果内存空间不足,它会自动重新申请一块内存(2倍于当前大小),然后把原来的内存内容拷贝到新的内存中区,最后在释放原来的内存空间;3)动态释放内存就导致一个问题的出现,那就是迭代器失效,...2011-06-14 17:35:47 · 211 阅读 · 0 评论 -
[C++][Thread] 转:线程池原理及创建(C++实现)
本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简单。[b]为什么需要线程池[/b]目前的大多数网络服务器,包括Web服务器、Email服务器以及数...原创 2011-06-15 13:01:24 · 110 阅读 · 0 评论 -
线程池(ThreadPool)
1 什么是线程池? 2 class CJobImpl{public: virtual void DoJob()=0;};class CJob : public CJobImpl{public: virtual void DoJob();};typedef list JobList;class CThreadImpl{public: friend class CTh...2011-06-21 20:55:07 · 190 阅读 · 0 评论 -
[C++] [设计模式] Singleton(单件/单例)模式
转自http://dark-c.at/blog/?p=79单例模式,顾名思义,此模式下的对象实例永远只有一个.很多初学者感觉这个模式的用处不大.但实际上,这个模式的应用非常广泛.很多情况下,我们会很自然的使用单例的方式来实现功能,如全局内存池;全局资源管理器;某个全局的工具类工厂...在UI开发上,同一时间点上仅会出现一个实例的对话框,也可以使用单例实现.单例的类图很简单: ...原创 2011-06-22 16:25:42 · 91 阅读 · 0 评论 -
C++关键字之static的基本用法
本来打算只是些一点点关于static函数的东西,搜索了一下,发现有篇文章写的不错,那么就学习下,顺便调试一下。 link:[url]http://www.vckbase.com/document/viewdoc/?id=1720[/url]C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及...原创 2011-03-10 10:28:42 · 94 阅读 · 0 评论 -
[行为模式] state模式
[b]问题[/b]每个人、事物在不同的状态下会有不同表现(动作),而一个状态又会在不同的表现下转移到下一个不同的状态(State)。最简单的一个生活中的例子就是:地铁入口处,如果你放入正确的地铁票,门就会打开让你通过。在出口处也是验票,如果正确你就可以ok,否则就不让你通过(如果你动作野蛮,或许会有报警(Alarm),:))。有限状态自动机(FSM)也是一个典型的状态不同,对输入有不同的响...原创 2011-03-14 12:27:34 · 114 阅读 · 0 评论 -
[C++] C/C++位结构(位域)[转]
转自:http://hi.baidu.com/liudeandg/blog/item/121633ddd2bf71265882dd20.html 位域 : 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“...原创 2011-07-05 16:26:47 · 169 阅读 · 0 评论 -
[C++] #pragma 预处理指令详解 转载
转自:http://www.cnblogs.com/cdo/archive/2005/06/08/170442.htmlpragma指令简介在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作.下面介绍了一下该指令的一些常用参数,希望对大家有所帮助!一. message 参数。message 它能够在编译信息输出窗 口中输出...原创 2011-07-05 16:44:11 · 145 阅读 · 0 评论 -
[C++] offsetof用法 - 计算成员地址的内存偏移量
转自:http://www.cppblog.com/lovedday/archive/2007/09/24/32801.htmloffsetof宏解析今天看代码时,发现一个有用的东东,offsetof(s,m),这是一个宏,MSDN文档的说明如下:Retrieves the offset of a member from the beginning of its parent ...原创 2011-07-05 16:55:15 · 878 阅读 · 0 评论 -
[转][C++][STL] numeric_limits的用法
From:http://www.cplusplus.com/reference/std/limits/numeric_limits/numeric_limits 浮点数据精度判断float x=0.0;float y=0.0f; if ( abs(x -y) <= numeric_limits<float>::epsilon() ){...原创 2011-07-06 15:00:06 · 324 阅读 · 0 评论 -
#(井号)在C/C++的#define宏定义中的特殊用法
转自:http://blog.sina.com.cn/s/blog_4b650d650100pufd.htmlhttp://359611946.blog.163.com/blog/static/11619002011413102539518/http://www.delnabla.cn/article.asp?id=205http://hi.baidu.com/hpagent/blog...原创 2011-07-08 22:52:10 · 398 阅读 · 0 评论 -
[C++][Logging] 项目中写日志模块的实现
一提到log,相信很多人就知道我要写些什么东西了,在所有的项目中都有自己一套写日志的模块。下面呢,我就根据平时的项目的需求写了一个比较简单使用的logger,方便输出各种等级的log。 事先声明一下,代码仅供大家学习参考之用,有什么不足的地方还请大家提出来。 :)在实际使用中可以考虑把log放入一个list,然后用一个线程专门负责写log. 下面logger的...原创 2011-07-11 14:22:26 · 410 阅读 · 0 评论 -
控制CEdit中文字输入格式(浮点类型)
void CExpendDlg::OnEnChangeEditExpendMoney(){ // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() /...2011-10-11 10:29:46 · 346 阅读 · 0 评论 -
[行为模式] head first 设计模式之策略模式(strategy)
1 概念 策略模式(Strategy):它定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strate...2011-07-25 10:16:00 · 120 阅读 · 0 评论 -
[行为模式]head first 设计模式之观察者模式(observer)
1 定义: 观察者模式(有时又被称为发布/订阅模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。 [color=red]定义对象间的一种一对多的以来关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 ...2011-07-25 10:18:41 · 98 阅读 · 0 评论 -
[结构型模式] head first 设计模式之装饰者模式(decorator)
1 别名 包装器wrapper2 介绍 通过使用修饰模式,可以在运行时扩充一个类的功能。原理是:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直接调用原来的类中的方法。修饰类必须和原来的类有相同的接口。 修饰模式是类继承的另外一种选择。类继承在编译时候增加行为,而...原创 2011-07-25 13:23:52 · 110 阅读 · 0 评论 -
[vc++][消息]C++中消息的种类
3.4 三种类型的消息在MFC应用程序中传输的消息有三种类型:窗口消息、命令消息和控件通知。3.4.1 窗口消息窗口消息(Window Message)一般与窗口的内部运作有关,如创建窗口、绘制窗口和销毁窗口等。通常,消息是从系统发送到窗口,或从窗口发送到窗口。当用SendMessage()或PostMessage()发送一个窗口消息时,变量Message、wParam和l...原创 2011-08-02 12:23:50 · 677 阅读 · 0 评论 -
[C++][Error Code]如何定义Error Code框架
对于不同的项目而言,error code返回机制是不一样的,但是能够很好的管理好不同模块间的Error Code并不是一件简单的事情,下面有一种比较简便的方法如下:[code="c++"]/**************************************************************************************************/...2011-12-12 16:20:43 · 1583 阅读 · 0 评论 -
[C++][基础知识1] 冲 突
一 冲 突如果一个派生类的不同的基类之间有共同的成员,则在派生类中便出现了成员同名的情况,从而造成成员访问的不惟一性,这种情况称为冲突。为了解决此类问题,可以在访问同名的成员时用作用域运算符”::”指定其所属的类。例如:[code="C++"]#includeclass A { int a;public: int b; A(int x,int y){a=x;b=...2011-12-15 10:43:38 · 396 阅读 · 0 评论 -
[C++][基础知识 2] 二 支配规则
二 支配规则当派生类中新增的成员与基类中的成员同名时,则在没有使用作用域运算符时缺省指代的是派生类中新增的同名成员。这种优先关系称为支配规则。例如:[code="c++"]#includeclass A{public: int a,b; A(int x,int y){a=x;b=y;}};class B:public A{public: int a;...2011-12-15 11:49:03 · 813 阅读 · 0 评论 -
C++][基础知识4] 友元函数
四 友元函数为了强调类的数据封装性,常将一些关键成员设为私有访问特性或保护访问特性。这样,在类的外面只能通过类的成员函数来访问这些成员,有时会觉得类的这种特性很不方便。但是,如果将这些成员的访问特性设为公有的,则又失去了类的封装性。为了解决这个矛盾,VC++中引入了友元函数的概念。对于某一个类来说,该类的友元函数可以是一个不属于任何类的普通函数,也可以是另一个成员函数。 1 友元函数的说...2011-12-15 11:53:18 · 167 阅读 · 0 评论 -
C++][基础知识 5] 虚函数
五 虚函数 VC++中的虚函数主要用来实现程序运行的多态性。所谓多态性是指发出同样的消息(如函数的调用)被不同类型的对象接受时导致不同的行为。利用多态性,用户只需发送一般形式的消息,而将所有的实现留给接受消息的对象。对象根据所接受到的消息而做出相应的操作。多态性是面向对象程序设计的重要特征之一。它与前面讲过的封装性和继承性构成了面向对象程序设计的三大特征。这三大特性是相互关联的。封装...2011-12-15 11:56:59 · 184 阅读 · 0 评论 -
[C++][基础知识 3]虚基类
三 虚基类 如图所示,如果类B和类C均由类A派生而成,而类D又是由类B和类C共同派生而成,则在派生类D中就出现了基类A的两个拷贝,从而产生了冲突。为了解决此问题,VC++中引入了虚基类的概念,即在由类A派生类B和类C时,如果将基类A说明为虚基类,则类A在此后的派生类中只生成一个拷贝。例如:[code="c++"]#includeclass A{public:...2011-12-15 11:58:15 · 268 阅读 · 0 评论 -
[转]vc中ifstream ofstream不能读取带有中文路径
转自:http://hi.baidu.com/songshu5555/blog/item/0d4281b47d1a627e8ad4b259.html有时候用ifstream或ofstream打开带有中文路径的文件会失败。解决办法:1、使用C语言的函数设置为中文运行环境setlocale(LC_ALL,"Chinese-simplified");2、使用STL函数设置...原创 2012-05-02 14:07:24 · 165 阅读 · 0 评论 -
OpenSSL 解析P12格式证书文件
1 解压openssl-0.9.8k_WIN32.zip 到 c:\根目录;解压文件夹如下; 2 打开控制台,并切换到OpenSSL可执行文件所在目录;3 利用OpenSSL创建.p12测试文件(也就是证书制作过程);详细创建步骤如下; 3.1 生成ca私钥 [color=red]a) openssl dsaparam -out dsaparam 1024[/color...原创 2012-05-30 21:07:48 · 1704 阅读 · 0 评论 -
[转]C++下遍历文件夹
Link:http://www.cnblogs.com/summerRQ/articles/2375749.html编写程序遍历文件夹及其子文件夹下所有文件,并输出到标准输出流或者文件流。1. 先考虑在单层目录下,遍历所有文件。以C:\WINDOWS为例:用到数据结构[color=red]_finddata_t[/color],文件信息结构体的指针。[code="c++"]st...原创 2012-06-14 12:08:36 · 183 阅读 · 0 评论 -
转:50个优秀的C/C++源代码网站
50个优秀的C/C++源代码网站 2010-08-09 08:48:10| 分类: 学习 |字号 订阅本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cnsword/archive/2009/05/13/4176636.aspxC/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链...原创 2011-12-09 17:09:26 · 152 阅读 · 0 评论 -
Windows 消息机制
三种类型的消息Default Window-Message Processing[缺省的窗口消息处理][url]http://www.cnblogs.com/shanzy/articles/1401098.html[/url]Messages and Message Queues[url]http://msdn.microsoft.com/en-us/library...原创 2012-06-29 09:10:26 · 90 阅读 · 0 评论 -
[转]数组引用(C++)
"数组引用"以避免"数组降阶"(本文曾贴于VCKBASE\C++论坛)受[hpho]的一段模板函数的启发,特写此文,如有雷同,实在遗憾。数组降阶是个讨厌的事,这在C语言中是个无法解决的问题,先看一段代码,了解什么是"数组降阶"[code="c++"]#include using namespace std;void Test( char array[20] ){...原创 2012-06-29 11:30:59 · 120 阅读 · 0 评论 -
ifstream获取二进制文件长度并比较内容
[code="c++"]#include using namespace std;bool FileCompare_Binary(const string file1, const string file2){ //File1 //////////////////////////////////////////////////////////////////...原创 2012-07-05 09:57:57 · 2071 阅读 · 0 评论 -
std::string 转换大小写
[code="c++"]#include#includeusing namespace std;string strFileName = "Helloq2WQT";transform(strFileName.begin(),strFileName.end(),strFileName.begin(), tolower);[/code]原创 2012-07-31 12:05:41 · 177 阅读 · 0 评论 -
获取粘贴板内容
[code="c++"] //2 Get Clipboard Data CString strClipboard; if (OpenClipboard()) { HANDLE hData = GetClipboardData(CF_TEXT); CHAR* buffer = (CHAR*)GlobalLock(hData);...原创 2012-11-20 08:22:29 · 356 阅读 · 0 评论