摘要: ①链表反转单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:struct linka { int data; linka* next;};void reverse(linka*& head) { if(head ==NULL) return; linka *pre, 阅读全文
posted @ 2011-09-20 17:14 likebeta 阅读(1428) 评论(0) 推荐(1) 编辑
摘要: #include <iostream>#include <string>#include <cstdlib>using namespace std;int main(){ float a = 1.0f; cout << (int)a << endl; cout << (int&)a << endl; cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么? float b = 0.0f; cout 阅读全文
posted @ 2011-09-20 16:33 likebeta 阅读(350) 评论(0) 推荐(0) 编辑
摘要: void ReStart(BOOL bNormal){ PROCESS_INFORMATION info; STARTUPINFO startup; char szPath[128]; char*szCmdLine; GetModuleFileName(AfxGetApp()->m_hInstance,szPath,sizeof(szPath)); szCmdLine=GetCommandLine(); GetStartupInfo(&startup); BOOL bSucc=CreateProc... 阅读全文
posted @ 2011-09-06 19:06 likebeta 阅读(1078) 评论(0) 推荐(0) 编辑
摘要: 前几日碰到一问题,当CSocket的Receive阻塞时,如何进行超时处理。由于程序是在多线程中使用Socket通信,开始时是在主线程中用定时监测Receive函数,当超时后,结束通信。但问题是CSocket对象无法释放。因此从网上搜索解决办法,直接在线程中对Receive进行超时处理。不错,搜到以下内容,很多网站转载。 为CSocket配置Time-Out功能 CSocket操作,如Send(),Receive(),Connect()都属阻塞操作,即它们在成功完成或错误发生之前是不会返回的。 在某些情况下,某项操作可能永远不能成功完成,程序为了等待其完成就得永远循环下去。在程序中为... 阅读全文
posted @ 2011-08-27 16:51 likebeta 阅读(4340) 评论(1) 推荐(2) 编辑
摘要: 在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [, argument] ... );除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使 阅读全文
posted @ 2011-08-27 10:49 likebeta 阅读(1272) 评论(0) 推荐(0) 编辑
摘要: 在写跨浏览器的js程序中,检测浏览器是一个很重要的工作。我们不时要为不同的浏览器写分支代码。如下是一种//添加事件工具函数function addEvent(el,type,handle){ if(el.addEventListener){//for standard browses el.addEventListener(type,handle,false); }else if(el.attachEvent){//for IE el.attachEvent("on"+event,handle); }else{//other el["... 阅读全文
posted @ 2011-08-24 21:52 likebeta 阅读(884) 评论(0) 推荐(0) 编辑
摘要: 1、初始化Load 导入一个XML文件到CMarkup的对象中,并对它进行解析。类似C#的Load。SetDoc 从字符串中导入XML数据,并对它解析。类似C#的LoadXml。2、输出Save 将XML数据写入文件中。类似C#的Save。GetDoc 将整个XML数据文档作为字符串返回。3、改变当前位置FindElem 定位到下一个元素,可能和一个标签名或路径匹配。FindChildElem 定位到下一个子元素,匹配元素名或路径。FindPrevElem 定位前一个元素,可能和一个标签名或路径匹配。FindPrevChildElem 定位前一个子元素,可能匹配标签名。FindNode 定位下 阅读全文
posted @ 2011-08-19 10:00 likebeta 阅读(3607) 评论(0) 推荐(1) 编辑
摘要: MFC对SOCKET编程的支持其实是很充分的,然而其文档是语焉不详的。以至于大多数用VC编写的功能稍复杂的网络程序,还是使用API的。故CAsyncSocket及CSocket事实上成为疑难,群众多敬而远之。余好事者也,不忍资源浪费,特为之注解。一、CAsyncSocket与CSocket的区别前者是异步通信,后者是同步通信;前者是非阻塞模式,后者是阻塞模式。另外,异步非阻塞模式有时也被称为长连接,同步阻塞模式则被称为短连接。为了更明白地讲清楚两者的区别,举个例子:设想你是一位体育老师,需要测验100位同学的400米成绩。你当然不会让100位同学一起起跑,因为当同学们返回终点时,你根本来不及掐 阅读全文
posted @ 2011-08-18 20:49 likebeta 阅读(778) 评论(0) 推荐(0) 编辑
摘要: 在编译VC++6.0是,出现fatal error C1010: unexpected end of file while looking for precompiled header directive的错误.解决方法:1、如果发生错误的文件是由其他的C代码文件添加进入当前工程而引起的,则Alt+F7进入当前工程的 Settings,选择C/C++选项卡,从Category组合框中选中Precompiled Headers,选择Not Using Precompiled headers。确定。2、在文件开头添加:#include "stdafx.h" 对预编译头文件说明如 阅读全文
posted @ 2011-08-17 10:00 likebeta 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 经过今天尝试C++解析XML串,也算有了不少收获,总结一下。我是使用的CMarkup类对XML进行操作。CMarkup好象都是先从一个xml文件里面把内容读出来,再进行解析,搞得我恨不得要把我的string写到xml文件里面再取出来了。如果需要直接读取string,可以直接用 CMarkup::SetDoc方法。最后其他的方法转载别人的使用例子,写得很全。(一)先讲一下XML中的物殊字符,手动填写时注意一下。字符 字符实体& &amp;或&' &apos;或'> ... 阅读全文
posted @ 2011-08-17 09:37 likebeta 阅读(1399) 评论(0) 推荐(1) 编辑