
C++语言
Ackarlix
专注、沉着、稳重、信心、行动
展开
-
在MFC中使用Tab Control
在MFC中使用Tab Control整理:Ackarlix 说实话,我刚开始看见Tab Control的时候,觉得很简单。哪知道用了一下,才发现自己错了。 要用好它,还是需要一些技巧的。经过网上搜索资料,以及我自己的摸索,把一些要点记录在这里。 Tab Control的运行效果有点像Property Sheet,但两者还是有一些区别。我的理解就是Proper转载 2007-09-01 06:12:00 · 1267 阅读 · 0 评论 -
使用C++标准库编写网络程序
使用C++标准库编写网络程序 整理:Ackarlix MFC类库为我们提供了“方便、好用”的CAsyncSocket和CSocket,但是MFC本身就是一个迷宫,进去一不小心就出不来了。像CAsyncSocket和CSocket它们是实现是很复杂的,里面实现异步消息是通过窗体的消息机制来实现的,常常出现初始化时的错误,即使运行一段时间程序也常常出现莫名其妙的错误导致程序崩溃。转载 2007-09-03 06:16:00 · 3500 阅读 · 1 评论 -
Windows Sockets API实现网络异步通讯
Windows Sockets API实现网络异步通讯 整理:Ackarlix 摘要:本文对如何使用面向连接的流式套接字实现对网卡的编程以及如何实现异步网络通讯等问题进行了讨论与阐述。 一、 引言 在80年代初,美国加利福尼亚大学伯克利分校的研究人员为TCP/IP网络通信开发了一个专门用于网络通讯开发的API。这个API就是Socket接口(套接字)--当今在TCP/IP网络转载 2007-09-03 06:18:00 · 1298 阅读 · 0 评论 -
Honoi塔问题
Honoi塔问题 作者:Ackarlix Hanoi塔问题,这是一个古典的数学问题,是一个只有用递归方法解决的问题。问题是这样的:古代有一个梵塔,塔内有3个座A,B,C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移到C座,但每次只允许移动一个盘,且在移动过程中在3个座上都始终保持大盘在上,小盘在下。在移动过程中可以利用B座。原创 2007-09-03 06:20:00 · 1841 阅读 · 0 评论 -
八皇后问题
八皇后问题 作者:Ackarlix 八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解原创 2007-09-03 06:21:00 · 1678 阅读 · 0 评论 -
使用 CInternetSession 封装多线程 http 文件下载
使用 CInternetSession 封装多线程 http 文件下载整理:Ackarlix 源代码下载 如何下载一个http文件?我们当然可以用socket自己实现http协议去做,但费时费力还易出bug,对于一个客户端程序稳定易维护是第一位的,所幸MS给我们提供了功能强大的internet API函数族,MFC的CInternetSession对它们进行了一些简单转载 2007-08-31 05:50:00 · 1455 阅读 · 0 评论 -
缓冲区溢出攻防
缓冲区溢出攻防整理:Ackarlix 下载源代码 很久以来,在人们心目中,“黑客”和病毒作者的身上总是笼罩着一层神秘的光环,他们被各种媒体描述成技术高手甚至技术天才,以至于有些人为了证明自己的“天才”身份而走上歧途,甚至违法犯罪。记得不久前就看到过这样一个案例:一位计算机专业研究生入侵了一家商业网站并删除了所有数据。当他在狱中接受记者的采访时,他非常自豪地说这样做只是为了证明自己和获转载 2007-08-31 05:51:00 · 1124 阅读 · 0 评论 -
用多路复用I/O模型实现支持多个客户端的通信服务
用多路复用I/O模型实现支持多个客户端的通信服务整理:Ackarlix 引言 多路复用I/O模型是UNIX/LINUX用得的最多的一种I/O模型。这种I/O模型在技术上的实现是包括select()以及FD_XXX的几个宏及常量。在单个进程中支持的客户端数量由FD_SETSIZE决定。Solaris 10和Linux 9.0默认为1024个,Windows 2000是64个。本文用代码给出转载 2007-08-31 05:52:00 · 1194 阅读 · 0 评论 -
几个值得研究的C语言经典例题
几个值得研究的C语言经典例题 作者:Ackarlix 例题1 找出一个3x3数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也有可能没有鞍点。程序原代码#includemain(){ int a[3][3],i,j,m,n,o,p; printf("Please input a 3*3 shuzu: "); for (i=0;i原创 2007-08-31 05:55:00 · 3068 阅读 · 1 评论 -
Visual C++ 2005 中的命名返回值优化
Visual C++ 2005 中的命名返回值优化整理:AckarlixAyman B. ShoukryVisual C++ Compiler Team摘要:说明 Visual C++ 编译器如何消除各种情况下多余的 Copy 构造函数调用和析构函数调用。 Microsoft 一直在为 Visual C++ 优化编译器寻找新的技术和优化方法,以便尽可能地为编程人转载 2008-06-05 07:15:00 · 912 阅读 · 0 评论 -
new和malloc操作符的区别
new和malloc操作符的区别整理:Ackarlix 1、new 是c++中的操作符,malloc是c 中的一个函数2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数3、内存泄漏对于malloc或者new都可以检查出来的,区别在于new可以指明是转载 2008-06-22 17:29:00 · 3536 阅读 · 0 评论 -
Visual C++编程技巧
Visual C++编程技巧整理Ackarlix 1.如何获取应用程序的实例句柄?应用程序的 实例句柄保存在CWinAppIm_hInstance 中,可以这么调用AfxGetInstancdHandle获得句柄.Example: HANDLE hInstance=AfxGetInstanceHandle();2.如何通过代码获得应用程序主窗口的指针?主窗口的转载 2007-09-01 06:09:00 · 1583 阅读 · 0 评论 -
Linux 环境下串口通信的编程
Linux 环境下串口通信的编程 整理:Ackarlix 串口设备无论是在工控领域,还是在嵌入式设备领域,应用都非常广泛。而串口编程也就显得必不可少。偶然的一次机会,需要使用串口,而且操作系统还要求是Linux,因此,趁着这次机会,综合别人的代码,进行了一次整理和封装。 具体的封装格式为C代码,这样做是为了很好的移植性,使它可以在C和C++环境下,都可以编译和使用。代码转载 2007-08-31 05:56:00 · 1948 阅读 · 0 评论 -
Tab control
Tab control 整理:Ackarlix 在Tab control上用子对话框!!在对话框中建立控件!! 1、首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个Tab Control 控件,根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,将此控件跟一个CTabCtrl类变量绑定在一起,这里设为m_tabctrl2、创建两个新的对话框转载 2007-09-01 06:13:00 · 1108 阅读 · 0 评论 -
C++字符串完全指引之一 —— Win32 字符编码
C++字符串完全指引之一 —— Win32 字符编码原著:Michael Dunn翻译:Chengjie Sun原文出处:CodeProject:The Complete Guide to C++ Strings, Part I引言 毫无疑问,我们都看到过像 TCHAR, std::string, BSTR 等各种各样的字符串类型,还有那些以 _tcs 开头的奇怪的宏。你也许转载 2007-08-25 11:05:00 · 953 阅读 · 0 评论 -
典型算法与ACM题目解析(2)—有向图的强连通分量
典型算法与ACM题目解析(2)—有向图的强连通分量 这道题是POJ的2186题,题意是说,有一群牛,总数为N(N 这道题目大家第一眼看到可能感觉直接模拟,但是由于数据量巨大,模拟的话肯定是过不了的,而且题目中还会出现环路的情况,比如1=>2,2=>3,3=>1,所以这解这道题最好的方法是使用有向图的强连通分量。 在同一个强连通分量里的所有的牛之间是互相仰慕的翻译 2007-08-27 01:57:00 · 3549 阅读 · 0 评论 -
高质量C++/C编程指南(六)
高质量C++/C编程指南(六)整理:Ackarlix9.5 不要轻视拷贝构造函数与赋值函数 由于并非所有的对象都会使用拷贝构造函数和赋值函数,程序员可能对这两个函数有些轻视。请先记住以下的警告,在阅读正文时就会多心:u u 本章开头讲过,如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”的方式自动生成缺省的函数。倘若类中含有转载 2007-08-28 00:56:00 · 1203 阅读 · 0 评论 -
高质量C++/C编程指南(七)
高质量C++/C编程指南(七)整理:Ackarlix附录A :C++/C代码审查表 文件结构 重要性转载 2007-08-28 01:02:00 · 1160 阅读 · 0 评论 -
VC++ 网络SOCKET编程
VC++ 网络SOCKET编程 作者:Ackarlix 为了方便网络编程,90年代初,由Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即Windows Sockets规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编程接口。现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种转载 2007-08-29 06:14:00 · 4741 阅读 · 0 评论 -
爬虫技术
爬虫技术 整理:Ackarlix引言 随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,如:原创 2007-08-29 06:28:00 · 3736 阅读 · 2 评论 -
约瑟夫问题
约瑟夫问题 作者:Ackarlix 这是一个非常经典的问题:n个骑士编号1,2,...,n,围坐在圆桌旁,编号为k的骑士从1开始报数,报到m的骑士出列,然后下一个位置再从1开始报数,找出最后留在圆桌旁的骑士编号。 这个问题可以用没有头结点的循环链表解决,数据域存放骑士的编号,出列的骑士,删除其对应的结点,最后剩下的那个结点就是问题所求的骑士编号。程序原创 2007-08-29 06:47:00 · 2673 阅读 · 0 评论 -
一道 Google 竞赛题的解法
一道 Google 竞赛题的解法一、竞赛题目Problem Statement You are given a String[] grid representing a rectangular grid of letters. You are also given a String find, a word you are to find within the g翻译 2007-08-30 06:33:00 · 1526 阅读 · 0 评论 -
C语言高效编程的几招
C语言高效编程的几招整理:Ackarlix本文出处:《单片机与嵌入式系统应用》2003.9引言: 编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。第一招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间。例如转载 2007-08-30 06:34:00 · 1210 阅读 · 0 评论 -
setsockopt 设置socket
setsockopt 设置socket 整理:Ackarlix1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2.转载 2008-06-22 18:10:00 · 1595 阅读 · 0 评论 -
Windows网络编程经验总结
Windows网络编程经验总结整理:Ackarlix 1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReuseaddr=TRUE; setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(转载 2008-06-22 17:49:00 · 1174 阅读 · 0 评论 -
如何写DLL
如何写DLL DLL一般有2种写法。 第一种用MS.NET的向导帮助就能生产一个DLL,很简单。也就是有个类的头文件,写好DLL后把DLL和头文件给调用端一起使用。 第二种是写一个接口文件。 在这里,我介绍一下通过接口文件写DLL。接口文件主要就是用到纯虚类。(我以前明白什么是纯虚类,但就是不知道怎么用。也看过关于接口的介绍,但没有看到实际的例子) MSDN关于DLL也提到一句话,就是通原创 2008-12-24 08:42:00 · 1685 阅读 · 0 评论 -
断言函数assert()
断言函数assert()作者:Ackarlix中文IT技术社区[挨踢网] 函数名: assert功 能: 测试一个条件并可能使程序终止用 法: void assert(int test);程序例:#include #include #include struct ITEM { int key; int value;};/* add item to list, mak原创 2008-12-25 08:44:00 · 1581 阅读 · 0 评论 -
#pragma warning指令
#pragma warning指令【整理】:Ackarlix该指令允许有选择性的修改编译器的警告消息的行为指令格式如下:#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list...]#pragma warning( push[ ,n ] )#pragm原创 2008-12-23 09:54:00 · 1430 阅读 · 0 评论 -
标准C++的四种强制转换类型运算符
标准C++的四种强制转换类型运算符 标准c++中主要有四种强制转换类型运算符: const_cast,reinterpret_cast,static_cast,dynamic_cast等等。 1)static_cast(a) 将地址a转换成类型T,T和a必须是指针、引用、算术类型或枚举类型。 表达式static_cast(a), a的值转换为模板中指定的类型T。在运行时转换过原创 2008-12-23 17:37:00 · 907 阅读 · 0 评论 -
Sprintf知多少
Sprintf知多少 在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。 sprintf 是个变参函数,定义如下: int sprintf( char *buffer, con原创 2008-12-23 17:39:00 · 844 阅读 · 0 评论 -
有效运用auto_ptr
有效运用auto_ptr 原文发表于1999年10月份的C/C++ Users Journal, 17(10)很多人听说过标准auto_ptr智能指针机制,但并不是每个人都天天使用它。这真是个遗憾,因为auto_ptr优雅地解决了C++设计和编码中常见的问题,正确地使用它可以生成健壮的代码。本文阐述了如何正确运用auto_ptr来让你的代码更加安全——以及如何避免对auto原创 2008-12-23 17:44:00 · 747 阅读 · 0 评论 -
C++的const关键字
C++的const关键字整理:Ackarlix[挨踢网]http://www.aitic.net 想小结一下const的种种用法和相关知识1,const修饰数据见文:const指针和引用2,const修饰成员函数表示该成员函数为常量对象调用,首先来看C++的对象和绑定的成员函数是如何实现的。class A{public: void Test(int _a)原创 2008-12-25 08:45:00 · 1440 阅读 · 2 评论 -
C++自动化(模板元)编程基础与应用
C++自动化(模板元)编程基础与应用 作者:Ackarlix挨踢网【中文IT技术社区】http://www.aitic.net #if 0 大家好,在这一类的文章中将会系统的介绍模板元编程的相关基础知识。最主要的是这类文章的目的就是让不熟悉模板元的C++迷们尽快的进入到模板元的奇妙世界里面来,所以每一篇文章都将只会讨论一个话题,尽可能的把这个话题说清楚原创 2008-12-25 09:00:00 · 2645 阅读 · 0 评论 -
详细解说STL hash_map系列
详细解说STL hash_map系列整理:Ackarlix挨踢网【中文IT技术社区】http://www.aitic.net 详细解说STL hash_map系列 0 为什么需要hash_map 1 数据结构:hash_map原理 2 hash_map 使用 2.1 一个简单实例 2.2 hash_map 的hash函数 2.3 hash_map 的转载 2008-12-29 00:58:00 · 1399 阅读 · 0 评论 -
C语言宏定义技巧
C语言宏定义技巧【整理】:AckarlixC语言宏定义技巧(常用宏定义) 写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义。。。。。。 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和原创 2008-12-19 10:14:00 · 1174 阅读 · 4 评论 -
如何使用 MFC 检索 Office 文档中的宏名称的列表
如何使用 MFC 检索 Office 文档中的宏名称的列表 本文介绍如何创建 MFC 自动化客户端检索 for Applications (VBA) 的 Visual Basic 列表的示例从 Microsoft Office 文档的宏 ( Sub 和 Function 过程)。 要获取 Microsoft Excel 中的 VBA 过程的列表工作簿、 Microsoft PowerP原创 2008-12-17 16:02:00 · 1453 阅读 · 0 评论 -
VARIANT、COleVariant 和_variant_t
VARIANT、COleVariant 和_variant_t 在OLE、ActiveX和COM中,VARIANT数据类型提供了一种非常有效的机制,由于它既包含了数据本身,也包含了数据的类型,因而它可以实现各种不同的自动化数据的传输。下面让我们来看看OAIDL.H文件中VARIANT定义的一个简化版:struct tagVARIANT { VARTYPE vt; union {转载 2008-12-29 22:58:00 · 4013 阅读 · 0 评论 -
VC6.0调用excel xp,word 2k
//vc6.0调用excel xp,word 2k #include #include #pragma warning (disable:4146 4192 4786 4081) #define USE_OFFICEXP 1 #ifdef USE_OFFICEXP #import "C:/Program Files/Common Files原创 2009-01-04 15:51:00 · 3096 阅读 · 0 评论 -
vc字符串的操作和相互转换
VC字符串的操作和相互转换一、BSTR、LPSTR和LPWSTR 在Visual C++.NET的所有编程方式中,我们常常要用到这样的一些基本字符串类型,如BSTR、LPSTR和LPWSTR等。之所以出现类似上述的这些数据类型,是因为不同编程语言之间的数据交换以及对ANSI、Unicode和多字节字符集(MBCS)的支持。 那么什么是BSTR、LPSTR以及LPWSTR呢?转载 2009-01-04 15:55:00 · 3045 阅读 · 0 评论 -
GetSaveFileName 操作函数笔记
GetSaveFileName 操作函数笔记【作者】:Ackarlix 在工作中,实现控件对IE端打开的Word文档另存为的时候,我陷入了困惑。如何获取到当前的文档,假如打开多个文档如何判断要保存的是哪一篇文档,文档保存后的格式是怎样的,是一个新的普通文档还是一个与IE端打开的文档一样格式的文档?这些都是我需要好好考虑的问题!首先便是怎样将文档保存到本地!我查找了网上许多论坛社区,都没原创 2009-01-05 15:31:00 · 6058 阅读 · 0 评论