
C++拾遗
专注于C++知识点
十八道胡同
C#,Qt,C++,JAVA,正则表达式
展开
-
DWORD 和4个char之间的相互转换
DWORD -> 4 Char:const static DWORD kCmdRefreshUI = 'ABCD';在内存中是以DCBA的方式存的: 直接把内存拷贝过来是倒序的:DCBA,反转就可以了。(注意这个小端机器,大端机器就不需要反转,上图右边是高位地址)。memcpy(buffer,&kCmdRefreshUI,sizeof(DWORD));string cmd原创 2012-03-08 14:31:00 · 9844 阅读 · 0 评论 -
我所理解的设计模式(C++实现)——享元模式(Flyweight Pattern)
概述想想我们编辑文档用的wps,文档里文字很多都是重复的,我们不可能为每一个出现的汉字都创建独立的空间,这样代价太大,最好的办法就是共享其中相同的部分,使得需要创建的对象降到最小,这个就是享元模式的核心,即运用共享技术有效地支持大量细粒度的对象。享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State)。内蕴状态是存储在享元对象内部原创 2013-05-25 22:29:23 · 9835 阅读 · 6 评论 -
我所理解的设计模式(C++实现)——原型模式(Prototype Pattern)
解决的问题:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。这个其实和C++的拷贝构造函数的作用是一致的,实际上就是动态抽取当前对象运行时的状态。类图结构: 客户(Client)角色:客户类提出创建对象的请求。抽象原型(Prototype)角色:这是一个抽象角色,通常由一个C#接口或抽象类实现。此角色给出所有的具体原型类所需的接口。在C#中,抽象原创 2013-04-06 16:01:44 · 11143 阅读 · 0 评论 -
用VS2010来开发qt
1.从http://qt-project.org/downloads 下载最新的为vs2010编译的qt library和VS add-in 2.依次安装qt library 和VS add-in3.打开VS2010,依次打开qt5->qt options->Qt versions,单击add,在弹出的对话框里点击Path后面的路径选择按钮,我这里是(C:\Qt\Qt5.0.1\5.0.1原创 2013-02-20 13:26:34 · 8152 阅读 · 2 评论 -
Qt基础——自适应窗口大小
本文是受其他文章启发,先把该文章转载在这里,以示感谢:我们知道,通过Qt的各种Layout可以实现控件的自动布局。但是在使用Qt Designer创建的UI时,发现UI始终是设计时的样子,无法随着容器的放大缩小自适应地变化。通过之前对ui的.h文件进行分析,我们知道Qt在生成ui代码时,根据最外层的Layout自动添加一个了Widget: /** 这原创 2013-03-15 10:54:30 · 26179 阅读 · 0 评论 -
Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
源于这两篇文章: http://blog.youkuaiyun.com/ggggiqnypgjg/article/details/6645824http://zhuhongcheng.wordpress.com/2009/08/02/a-simple-linear-time-algorithm-for-finding-longest-palindrome-sub-string/这个算法看了三天转载 2012-11-12 13:59:52 · 1372 阅读 · 0 评论 -
关闭VS里的C++智能提示
在VS2008和VS2005里面,使用 http://blogs.msdn.com/b/vcblog/archive/2007/11/19/controlling-intellisense-through-macros.aspx里的方法去关掉。在VS2010里面,Disable intellisense 即可,在Tools->Options->Text Editor->C/C++->A原创 2012-09-10 10:56:32 · 6073 阅读 · 0 评论 -
C++模板元编程 入门简介
转载自:http://www.cnblogs.com/salomon/archive/2012/06/04/2534787.html最近一直在看STL和Boost,源码里边好多涉及到模板元编程技术,简单了解一下,备忘(Boost Python中的涉及模板元的部分重点关注一下)。范例引入// 主模板templateint N>struct Fib{ en转载 2012-06-23 11:04:21 · 2125 阅读 · 0 评论 -
我是怎么调试C++ windows service的
其实调试C++ windows service和调试普通的C++ console App/MFC 没什么大的区别:windows service跑起来之后,你可以选择Tools->Attach to Process 在Available Processes里面找到你要调试的服务,点击Attach即可。如果你的服务是在Session 0 ,那么你可能要以管理员的身份打开VS,才能At原创 2012-06-18 13:31:26 · 3945 阅读 · 0 评论 -
初始化一个NULL-terminated array of strings in C (以NULL结尾的字符串数组)
我在调用一个开源库的时候发现参数是这样的:a NULL-terminated array of strings ,脑子一下转不过弯来,google后发现。。。方法:const char *argv[] = {"foo", "bar", NULL };可参考:http://stackoverflow.com/questions/2750846/correct-way-to-i原创 2012-06-01 13:40:59 · 2031 阅读 · 0 评论 -
tlb文件为何而生?
tlb文件是什么?tlb文件是一个说明文件,通过TLB文件,用户可以得知你的DLL中的COM接口以及常量等信息。其可以单独发行,也可以作为组建DLL中的一个资源随组件一起发行。你可以在VS的Object Browser中看到该文件中包括哪些常数、接口、类,而每个类又包括什么方法和属性。微软提供的各种SDK中通常包括一个或数个TLB文件以方便编程。 怎么创建tlb文件?用MIDL.e原创 2012-04-01 10:53:56 · 14753 阅读 · 1 评论 -
add ScanDestinations into ScanAvailableEvent in WSDAPI
Congratulation ! You find the right way to solve this problem! step 1: regenerated .h .cpp .idl file according to http://blogs.msdn.com/b/dandris/archive/2008/06/30/help-how-do-i-send-data-in-my-w原创 2012-03-31 16:41:37 · 2531 阅读 · 0 评论 -
用非阻塞socket来从服务器拿数据
关于如何使用阻塞socket来从服务器拿数据请参考: http://blog.youkuaiyun.com/lcl_data/article/details/7325065修改阻塞socket到非阻塞的socket的注意事项:1.非阻塞的socket的是在阻塞的socket的基础上设置标识而成。2.使用非阻塞的socket的时候要注意,send完命令之后不能立即recv,这个时候数据还没到,需原创 2012-03-14 15:56:43 · 2230 阅读 · 0 评论 -
BSTR 和 string 之间互转
_bstr_t 在头文件comutil.h里面定义。但是string newStr = (cahr *)bstr;的方法是不可以的,这样只会把bstr里面的第一个字符赋值给string. string str = "Hello IPad"; BSTR bstr = _bstr_t(str.c_str()); string newStr = (_bstr_t)bstr;原创 2012-03-08 14:44:34 · 14155 阅读 · 1 评论 -
最佳实践:C#项目转C++项目
最近在把一个C#项目转到C++项目,下面整理下C#和C++不同的地方,给各位个参考,避免入坑:1)默认对象赋值方式不同,所以修改时要多加注意。具体参考 https://bbs.youkuaiyun.com/topics/3924405472)类的变量默认值不同 .net默认是类型的默认值,C++没有默认值的。要避免C++的类成员没有默认值的意外行为。3)a[i][j]和a[i,j]是不相同的。...原创 2018-12-25 14:53:59 · 9271 阅读 · 0 评论