![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 50
fengbangyue
做一个真实的自我
展开
-
C++接口的定义用一个实例说明
http://xujingli88.blog.163.com/blog/static/41178619200962410122172/ 接口是一个没有被实现的特殊的类,它是一系列操作的集合,我们可以把它看作是与其他对象通讯的协议。C++中没有提供类似interface这样的关键 字来定义接口,但是Mircrosoft c++中提供了__declspec(novtable)来修饰一个类转载 2011-12-25 18:06:03 · 1554 阅读 · 1 评论 -
GetFullPathName函数使用
DWORD GetFullPathName( LPCTSTR lpFileName, // file name DWORD nBufferLength, // size of path buffer,建议取值为:MAX_PATH LPTSTR lpBuffer, // path buffer LPTSTR *lpFilePart // address of file nam原创 2012-04-16 19:30:06 · 4244 阅读 · 0 评论 -
解析以'|'分隔的字符串
#include#includeusing namespace std;void GetFormatString(string pStr[],string strline){ int length ; stringstream stream(strline); int i=0; CHAR array[MAX_PATH]={0}; while(stream.get(array,MAX_P原创 2012-04-16 20:52:03 · 822 阅读 · 1 评论 -
谈谈PostThreadMessage使用
今天不CSDN是怎么了,又访问不了了。 第一年学习MFC,使用多线程还算娴熟。但一直却不知道消息队列是基于线程的,可谓悲剧,说着都脸红。今天有这么一个需求,多个工作线程在完成时需要写日志,该功能非必要功能,由于写的量还是比较大,而且多个线程同时写一个文件我也不知道会不会出问题,虽然现在我开20个线程的时候没有发现文件被写乱的情况,但是还是有点担心的。决定使用另一个线程来完成写日志的功能。我原创 2012-04-19 00:17:21 · 4422 阅读 · 0 评论 -
亲自体验了VS2003和VS2010的不同
VS2003和VS2010中间相差了一个2005和2008,2003也够老的了,没办法才来公司公司就使用这个建的工程。不仅操作不便,工程常常莫名死掉,而且代码代码坚持不规范啊。以前没注意看,这几次把公司代码拿到我的笔记本上编译的时候,发现VS2003下面的一个整型变量直接写出了static a = 0;居然通过了,在2010下这个被坚持出来了。还有字符串类型,VS2003报如下的错:“INT32原创 2012-05-05 23:27:19 · 5766 阅读 · 0 评论 -
WM_COPYDATA一点使用总结
在项目中的进程间通信使用了WM_COPYDATA消息进行,进程间通信时使用SendMessage函数保证接受进程复制完数据后才能够返回,使用PostMessage作为进程间通信时不行的。SendMessage函数返回值类型是int,但在使用时发现返回总是0.SendMessage并不是响应函数返回值。而SendMessage虽然等待响应函数返回才返回,但是我们通过wparam或lparam传递给响原创 2012-05-10 00:05:33 · 2981 阅读 · 4 评论 -
杯具的20120528居然编译BOOST库的ASIO库没有成功
中午吃饭的时候想把BOOST的ASIO库编译好,准备在自己弄的项目中练练手,BOOST代码已经CheckOut到本地目录。找了半天终于在和boost目录同层的tools目录下build/v2下面找到bjam.exe,这个是通过运行该目录的boost_start.bat吧才生成的。然后照着网上找到的方法照做,居然没成功。今天先在这打个标记,哪天解决后来回复一个。原创 2012-05-28 23:55:27 · 1475 阅读 · 3 评论 -
20120530--asio让网络编程代码变简洁了
前面说到要使用asio库,需要编译datetime等库。现在使用asio库的时候,发现以前使用C语言实现一个简单的服务器模型时,代码是多么的冗长,想放到几个函数里面呢,觉得关系又比较密切,阅读不方便;放到一起吧又觉得代码太长。对asio库不了解,今天看了网上一个实现echo服务器的代码,很简洁。整个代码从建立服务器,到分发客户端数据,几行代码搞定。当然,首次接触asio和boost的人,对这段代码原创 2012-05-30 20:53:30 · 3217 阅读 · 0 评论 -
20120519---来说说调试吧
连续几个周末加班了 程序在我机器上跑一直没有问题,发到合作方去就崩了一片,在公司测试也没问题,郁闷中,以为是他们服务器配置或环境导致,其实就算服务器配置问题导致我程序崩溃,我也应该找原因,只因为太忙了。 每天给我发几十个crash文件,虽然收下,我也没时间去调,主要是对调试这个问题需要花费多长时间一直没地,所以还是把知道的先做了。昨天开始调,公司有台XP系统也崩了,正好可用,发现原来原创 2012-05-19 18:08:42 · 936 阅读 · 0 评论 -
为什么要设置wchar_t为build_in type
在VC6和VS2003下,默认的wchar_t设为build_in type为no,但是我们在使用另外的库的时候,可能会有些库设置为yes了,设置为no的,wchar_t被映射成unsign short类型,而设置成yes的,wchar_t被映射成_wchar_t类型,这样就导致两个函数名字不一样,所以就找不到了。因此在使用过程中要注意库和本身设置一样就OK了。原创 2012-06-08 12:59:29 · 1269 阅读 · 0 评论 -
srand/rand随机数生成
网上都说(int)(rand()*N/(RAND_MAX+1.0))产生的随机数比(int)(rand()%N)更随机,但是好像前者产生随机数的奇偶性不怎么样,下面是我测试N=2是,产生随机数的结果。测试代码如下,不知道为什么,当Sleep为5000的时候(rand()*N/(RAND_MAX+1.0))生成的随机数就是0101010101的,总的来说,(int)(rand()%N)产原创 2012-06-09 16:12:38 · 806 阅读 · 0 评论 -
20120611我是C++程序员吗
我是C++程序员吗?这两天在使用boost库编程,渐渐开始熟悉了。看到里面的datetime库的时候,不由得让我想起毕业时第一家公司工作时的要完成的一个功能模块,我花费了多少时间和经历去造轮子啊!那是一个广播系统,需要提供给用户一些设置接口,如每周五定时播放节目,每个月最后一天定时播放某节目。某个周三、周五定时播放。当时每个函数我自己一个一个的去写计算。现在想如果用boost的datetime分分原创 2012-06-12 00:06:55 · 1188 阅读 · 0 评论 -
2012524比较早回家的一天
到公司快三个月了,最近三个周真是没休息够,今天回来算早的一天了。 工作还是一如继往的,本来有几个BUG还需要改,但怕影响明天的版本发布,就不改了,BUG不是很严重。第一次在WIN7下开发,开发的程序放到XP下跑问题真的很多,也第一次在VS2003下开发程序,晕死。早上醒来就一直认为今天是星期五,这样的状态怎么不早点回来呢,恩? 对于这样忙碌的生活,也还好吧,说实话我理论知识也原创 2012-05-24 23:01:15 · 774 阅读 · 0 评论 -
20110614使用boost使用流水记share_ptr
开始慢慢地把boost库引入到项目中,目前已经使用了filesystem、format、string等字符串操作和文件系统库了。本来是准备引入share_ptr库的,但是发现想引入的地方就是一个多线程的地方。引入后发现以前写的库接口需要修改。而且就引入share_ptr库,不引入thread库,share_ptr作为线程参数时还是会有问题。于是暂时对这两个库进行引入。就仅仅引入了字符串原创 2012-06-14 20:26:30 · 2653 阅读 · 0 评论 -
lua正则表达式使用记录
需要对下面的字符串进行解析:a=ab=byuyue_act=1|2013-02-28 10:00:00|2013-01-01 10:00:00|2013-01-01 10:00:00|显示文字yuyue_tag=1|1|显示文字yuyue_server=101001-1-1.8|201001-2-文字speedlimit=150yuyue_update_state=1原创 2013-01-26 14:13:17 · 2848 阅读 · 0 评论 -
VC环境的问题
今天测试的反馈安装包安装完成后在D盘根目录下回产生一些多余的文件,搜索了一下是vcredist.exe的BUG,在vs2008 sp1版本已经修复。记录如下:如图,安装完成后产生的文件有这些。换了vcredist.exe版本后解决问题。下载链接为:http://www.microsoft.com/zh-CN/download/confirmation.aspx?id=2092原创 2015-03-13 14:12:56 · 1274 阅读 · 5 评论 -
4月12最近状态
一进入四月就开始忙个不停,基本是到家就睡了,没有在来更新博客。这就是工作再不同行业的必经阶段。刚开始的时候,什么东西都是新的,以前的积累除了经验,很多东西都需要自己重新编码。加上很多事很其他公司人配合,不得不我等你你等我的进行,浪费了很多时间。从最开始的单线程,到双线程,在到线程数可配置,代码不断的优化,速度不断的提高,自己也感到有所收获。但体重真的明显下降了,这人啊,从大学一年级到上个月一直保持原创 2012-04-13 00:35:14 · 812 阅读 · 0 评论 -
求一个整数包含1的个数的代码
无意间看到的一个求一个整数包含1个数的代码,Very简洁,开始不相信这样能够实现。测试一圈果然是这样的。不错,现在用不到,也不知道会在什么情况下用到这样的东西。先搜集了,有人弄出来就表示有人在用,以后遇到就可以抄一把了。int BitCount(unsigned int n){ int c = 0; for (c; n;++c) { n &= (n - 1); } return c转载 2012-03-22 13:08:26 · 797 阅读 · 0 评论 -
静态成员变量的一个测试
//该类用来测试静态成员变量是否占有了类的空间class TestStatic{public: TestStatic(){}; ~TestStatic(){}; static int GetValue(){ return m_nTestValue;} static void SetValue(int nValue){m_nTestValue = nValue;}private:原创 2012-03-19 11:38:24 · 762 阅读 · 0 评论 -
boost::function学习
上次CSDN密码泄露后,修改了一个复杂的密码,又一直是自动登录,今天再登录时提示需要密码了,可是已经忘记了。使用邮箱找回来时,用了yahoo、qq邮箱都找回一个以前使用的CSDN账号,忽然间发现自己还有三个CSDN账号,怎么都忘记了呢。后来使用用户名把密码找回了,原来我一直使用的这个账号是用Google邮箱注册的,说多了。 今天学习的是boost下的function,书上是这样描述的。原创 2012-01-08 18:18:26 · 7595 阅读 · 0 评论 -
运行时库概念
一直在写代码一直在对编译器中的--》代码生成---》运行时库 进行设置,每次都是一个一个地尝试,最后程序没问题为止,但没有思考过为什么?今天在转载文章一篇描述该选项的内容。另外报告一下 《深入Linux内核架构》第四章完成阅读,今天听同事说可以见微软的DLL封装层so给android调用,是不是真的哦。那太强大了吧问题描述:是自己编译后的程序传给别人用的时候报的错误么??转载 2012-01-12 15:31:11 · 968 阅读 · 0 评论 -
感悟我的C++的设计思想的悲哀
一直使用C++的类进行编程,设计的类构造方法和析构方法一直是公有的,说实话,简直就是把他当一个结构体来使用。当然也会使用虚函数特性、继承等特性。但是对其属性及方法设置的访问权限重来没有思考过,为何如此设计。理解了这些,就是一种设计思想,一种架构的思想,感叹自己知识不够的时候,也算又学了一招吧。下面的几个特性引起了我的思考:1。构造函数设计为保护的,表示这个类是用来帮助子类构造接口的。2原创 2011-12-29 13:00:16 · 977 阅读 · 0 评论 -
C++——函数模板的参数推导
C++模板的强大,不得不让人佩服,STL和BOOST两大库,居然建立在其基础上,作为一个要学好C++的同学,了解一下不犯戒的。下面是转的文章:http://blog.csdn.net/shinehoo/article/details/5722362 原创是谁就不追究了,主要是好的东西大家分享的原则。看了这篇文章才真的发现模板的直接用处,以前只是看到深奥而止步。在写作泛型函数转载 2011-12-30 20:59:04 · 948 阅读 · 0 评论 -
Hash表算法学习
转自:http://www.cnblogs.com/abruzzi/archive/2009/04/18/1438793.htmlHash表这种数据结构在java中是原生的一个集合对象,在实际中用途极广,主要有这么几个特点:访问速度快大小不受限制按键进行索引,没有重复对象用字符串(id:string)检索对象(object)今天整理以前在学校写的一些算法,翻出来一个hash原创 2012-02-07 14:47:12 · 803 阅读 · 0 评论 -
result_of学习
result_of是一个小但很有用的组件,可以帮助程序员确定一个调用表达式的返回类型,主要用于泛型编程和其他Boost库组件,它已被收入TR1。result_of位于名字空间boost,为了使用result_of组件,需要包含头文件,即: #include using namespace boost;一般来说result_of在一般编程中很少会被使用到,可能会在原创 2012-01-03 21:06:27 · 4601 阅读 · 0 评论 -
boost::ref学习
在C++的算法和函数之间,以类对象作为参数的情况很非常常见的问题,一般情况下传值语义是可行的,但也有很多特殊情况,作为参数的函数对象拷贝代价过高(具有复杂的内部状态),或者不希望拷贝对象(内部状态不应该被改变),甚至拷贝是不可行的(noncopyable、单件)。 boost.ref应用代理模式,引入对象引用的包装器概念解决这个问题。它位于名字空间boost,为了使用ref组件,需要包含原创 2012-01-03 22:49:40 · 7083 阅读 · 1 评论 -
boost::bind实现原理学习
公司最近商业模式转变,很多项目都被暂停了,我们项目也是在暂停之列,而且部门同事也被裁掉一半。在这个时间点,让我也有时间在工作时间了学习一把。对boost::bind学习的时候,顺便看到一边关于bind实现原理的讲解,在里面看到了在类中使用模板方式定义一个回调函数,于是想验证一把,但发现模板回调函数居然不能是全局的。可以在类里面定义,可以在函数参数里面定义。具体原因不是清楚。下面是对该bind函原创 2012-01-05 12:56:36 · 4135 阅读 · 0 评论 -
C++通过list和template实现简单的对象池
远链接:http://www.cnblogs.com/lynch_world/archive/2011/07/21/2113244.htmlC++通过list和template实现简单的对象池通过重载new和delete实现简单的对象池,此处只是一个示例代码,并没有对对象上限个数进行限制及回收等操作一个简单的实现【编辑环境:linux+vi,编译环境:g++转载 2012-02-19 00:37:01 · 979 阅读 · 0 评论 -
CreateEvent的复习
WINDOWS下的事件,以前也用过。忘了。CreateEvent函数用来创建一个事件,返回事件句柄,参数需要传入事件名称,是否手动设置信号,开始时是否为有信号状态等。在这里不是在讲一遍怎么使用函数,主要是说一下今天在编程中对ResetEvent函数的一个使用场景。使用一个线程不断地从一个队列中取出节点进行运算,当队列为空时线程不能够退出,必须等待其他线程向里面插入数据后再开始工作,原创 2012-03-23 21:14:11 · 592 阅读 · 0 评论 -
确认某个目录是否存在,如果不存在则创建
//确保目录存在,不存在则创建之CString MakeSureDirExist( CString strRelativePath ){ int index=0; CString strFullPath(""); int nLen = GetFullPathName(strRelativePath.GetBuffer(),MAX_PATH,strFullPath.GetBuffer(MA原创 2012-03-27 20:58:14 · 887 阅读 · 0 评论 -
LUA与C++交互第一篇
到公司已经两个周了,学习Lua已经开始在项目中使用,但是由于使用的lua函数基本上都是公司在上面进行了一次封装的,没有源代码对两种语言的交互详情还是不甚了解。如:如果向LUA注册一个对象给LUA使用,如何调用LUA中函数这些在公司的SDK看来就是一个简单的RegisterObject对象的几个属性进行填写就行了。 今天主要是对在Lua中如何调用C++函数和在C++中如何调用Lua函数进行原创 2012-03-11 16:27:16 · 28458 阅读 · 7 评论 -
lua_call的使用
在学习一门语言的时候,开始的时候就是不断熟悉其提供的API函数,只有熟悉了API函数的使用,才能在里面加入自己的思想,从而发挥作用达到自己的目的。今天学习的是lua_call,和该函数相似的函数分别是lua_pcall和lua_cpcall.这些函数的目的就是让我们能够执行压入栈中的函数,该函数可能是lua中定义的函数,可能是C++重定义的函数,当然我们一般是用来执行lua中执行的函数,C++中定原创 2012-03-11 17:19:49 · 34006 阅读 · 2 评论 -
WINDOWS下输入法中英文切换
这几天在做一个注册页面,其中有一个真实姓名字段要求必须输入中文,于是想能不能在该真实姓名编辑框得到焦点的时候就将输入法切换为中文输入法呢?于是就开始寻找前辈们的成功案例,果然功夫不费有新人,虽然费了很长时间。 开始是不知道如何着手,接下来找到了一个遍历系统安装输入法的C++类,并且可以设置激活任何一种已经安装的C++类,因此这就简单了,但是需要判断我们激活的输入法是不是中文输入法。下原创 2012-03-12 20:59:52 · 10385 阅读 · 1 评论 -
LUA注册简单C++类代码走读
主要是针对网上的一份代码自己的理解注释,下面就直接贴代码了。//LuaCPP.h#includeclass CTest{public: //带一个参数的构造函数 CTest(int value):m_value(value){}; virtual ~CTest(){}; //进行加操作 int Add(int x,int y) { printf("%p Add:x=%d原创 2012-03-15 21:16:43 · 4718 阅读 · 1 评论 -
GetModuleFileName在DLL中的使用
很久没有写博客,今天登录进来看见提示可以使用MarkDown来写博客,想试试手如何。 最近和韩国那边联调一个游戏,对方提供一个DLL给我调用。发现他们的DLL只能是我的exe在他们处理目录下面才能成功,否则都会报错。跟踪调试后发现,是因为韩方提供的DLL里面,通过调用了GetModuleFileNmae来获取DLL本身的路径,然后在根据路径去获取处理目标文件路径。然后因为他们使用GetM原创 2015-05-08 15:04:23 · 3340 阅读 · 0 评论