
C/C++
zfj1986
这个作者很懒,什么都没留下…
展开
-
被误解的C++——模板和宏
前些日子,论坛里大打口水仗的时候,有人提出这样一个论断:模板本质上是宏。于是,诸位高手为此好好辩论了一番。我原本也想加入论战,但是觉得众人的言论已经覆盖了我的想法,所以也就作罢了。尽管没有参与讨论,但“模板究竟和宏有什么关系”这个问题,始终在我的脑海中上下翻飞。每当我能够放松下来的时候,这个问题便悄悄地浮现。(通常都是哄儿子睡下,然后舒舒服服地冲个热水澡的时候)。我思索了半天,决定做些实际的代码,转载 2012-08-05 22:50:13 · 427 阅读 · 0 评论 -
C/C++实现的最基本的加解密函数代码
Crypt.h#pragma onceclass CCrypt{public: static BOOL Encrypt(BYTE* source,BYTE* destination,DWORD length); static BOOL Decrypt(BYTE* source,BYTE* destination,DWORD length);};Crypt.cpp#incl原创 2012-07-30 17:55:57 · 741 阅读 · 0 评论 -
C/C++不定参数的函数实现方式
C/C++语言有一个不同于其它语言的特性,即其支持可变参数,典型的函数如printf、scanf等可以接受数量不定的参数。如: printf ( "I love you" ); printf ( "%d", a ); printf ( "%d,%d", a, b ); 第一、二、三个printf分别接受1、2、3个参数,让我们看看printf函数的原型: int p转载 2012-07-30 17:10:09 · 652 阅读 · 0 评论 -
堆与栈的基础知识
一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(s转载 2012-07-30 16:47:27 · 253 阅读 · 0 评论 -
C/C++ 常见误区
1. C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++和C是兄弟关系。没有谁比谁先进的说法,更重要的一点是C和C++各自的标准 委员会是独立的,最新的C++标准是C++98,最新的C标准是C99。因此也没有先学C再说C++的说法,也不再(注意这个"不再")有C++语法是C语法的超集的说法。2. C++/CLI 和 C# 是微软的,它们与C转载 2012-07-30 16:53:32 · 625 阅读 · 0 评论 -
VC++模拟键盘输入的一些资料
方法1: HWND hwnd=::FindWindow(0,"文档1"); //假设你要找的窗口标题为“文档1” CWnd::FromHandle(hwnd)->SetForegroundWindow(); ::PostMessage(hwnd,WM_KEYDOWN, VK_ESCAPE, 0L); //发送ESC按下的键盘消息方法2:这里以向记事本程序发送Ctrl+s转载 2012-07-30 16:14:44 · 314 阅读 · 0 评论 -
C/C++获得系统时间具体实现代码解析
C++获得系统时间的实现方法有很多种,我们在这里为大家列出了4种解决方案,供大家在使用的过程中参考选择。C++获得系统时间方案— 优点:仅使用C标准库;缺点:只能精确到秒级#include #include int main( void ){ time_t t = time(0); char tmp[64]; strftime( tmp, sizeo转载 2012-07-30 16:05:04 · 998 阅读 · 0 评论 -
atoi、itoa、strcpy、strcmp函数的C/C++代码实现
int my_atoi(const char* p){ assert(p != NULL); bool b_flag = false; int n_res = 0; if(p[0] == '+' || p[0] == '-') { b_flag = (*p++ != '+'); } while(isdigit(*p)) { n_res = n_res*10 + (*原创 2012-07-29 21:30:06 · 537 阅读 · 0 评论 -
win32程序响应拖拽消息
主要分3步:1.#include ,需要处理的API在Shellapi.h中。2.在窗口建好后使用DragAcceptFiles(hWnd,TRUE)打开窗口支持拖拽功能,也可以设置窗口的支持拖拽属性。3.在回调中处理:case WM_DROPFILES: { HDROP hDrop = (HDROP) wParam; int count=Dra转载 2012-07-30 14:27:30 · 509 阅读 · 0 评论 -
给应用程序加装“看门狗”
相信大多数的程序员或用户,在Windows中见到类似于下面的亲切而又温馨的提示信息,都不会感到陌生:“XXX执行了非法操作,将被关闭。要终止程序,请单击;要调试程序,请单击。”或者,“是否向Microsoft发送错误报告?,。”如果这个程序运行在无人值守、需要保持连续工作状态的场合,而其中的bug又一时难以排除,就需要采取应急措施,消除或减少程序出错造成的影响。本文讨论解决这个问题转载 2012-07-30 14:24:05 · 324 阅读 · 0 评论 -
字符串与整数、浮点数、无符号整数之间的转换常用函数
atof(将字符串转换成浮点型数)表头文件 #include 定义函数 double atof(const char *nptr);函数说明atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结 束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或转载 2012-07-30 14:07:58 · 245 阅读 · 0 评论 -
常用C语言标准库函数
1、调试相关的宏_FILE_:用来代表当前源代码的文件名(字符串表示)_LINE_:代表当前源代码中行号(正整数表示)_func_:代表当前所在函数的函数名_DATE_:代表编译时进行预处理的日期,格式为“MMM DD YYYY “_TIME_:代表编译源文件的当前时间,格式为“hh:mm:ss”2、主要提供两类重要的函数:字符测试函数和字符转载 2012-07-30 13:51:30 · 737 阅读 · 0 评论 -
C/C++监测代码运行时间
代码只是演示下基本原理,未封装。#include #include int main(){ DWORD m_lFreg; LARGE_INTEGER timeFreq; QueryPerformanceFrequency(&timeFreq); m_lFreg = timeFreq.LowPart; LARGE_INTEGER timeCount; QueryPer原创 2012-07-30 13:32:17 · 619 阅读 · 0 评论 -
关于拷贝构造函数和赋值运算符
重点:包含动态分配成员的类 应提供拷贝构造函数,并重载"="赋值操作符。以下讨论中将用到的例子:class CExample{public: CExample() { pBuffer=NULL; nSize=0; } ~CExample() { delete pBuffer; } void Init(int n) { pBuffer=转载 2012-07-30 12:56:06 · 156 阅读 · 0 评论 -
C/C++ 根据不同复杂度生成随机数 (关键字:Random、Rand、seed)
Random.h中的代码:#pragma onceclass CRandom{public: CRandom(VOID); virtual ~CRandom(VOID);public: BOOL Init(UINT seed); INT Rand(VOID); INT SimpleRandom(VOID); INT ComplexRandom(VOID);private原创 2012-07-30 10:47:57 · 906 阅读 · 0 评论 -
C/C++实现的二进制与十进制互转
int main( void ) { char buf[9]; /*输入的整数不超过8位*/ int num=0,sign=10; unsigned int i=0; while(1) { printf("请输入数字: "); gets(buf); for (i=0; i<strlen(buf); i++) { if ( !(buf[i]>='0原创 2012-07-31 22:21:31 · 692 阅读 · 0 评论