编程技巧 - 文章列表
-
sql 聚合函数 group by 和having 的使用方法
在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。 SELECT SUM(population) FROM bbc 这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有国家的总人口数。 通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。当你指定 GROUP BY region 时, 属于同一个region(地区)的一组
-
告诉大家如何使用C++的CList C++使用技巧
初学mfc者,往往对CList等mfc的Collect类的使用感到迷惑,在使用中经常会遇到许多问题,导致对vc中的Collect类的使用产生了惧怕。以下,就个人经历而言,告诉大家如何使用CList。CList是一个双向链表类。1、头文件名不可少Clist类定义在Afxtempl.h 头文件中,因此在使用该类时,需要加这个头文件名。2、理解CList的声明和构造方法CList的声明如下:template< class TYPE, class ARG_TYPE >class CList : public CObject由此,我们知道CList是一个模版类,那么他的两个class是什么意
-
C++程序内存越界的错误原因
现象: 1 程序出现异常 异常的现象有很多,如:代码突然跑到不相干的地方去执行,访问异常,正常的变量操作也报错... 原因:代码段紊乱,this指针被改变,指针指向的数据被改变 2 程序按逻辑执行,但数据错误 如:变量内容突然消失 原因:变量所在空间被其它操作误删除等 3 其它莫名其妙的错误 原因: 越界的基本比较原因,如
-
C++项目怎样调用C#写的DLL类库
使用C++调用C#的DLL SwfDotNet是C#编写的,作者的C#水平,真是令我佩服。这是个特别好的读写Swf文件的库。但是,我要用在C++项目中,怎么让C++调用C#的DLL呢。今天一上午都在琢磨这个问题,耽误了很多时间,原因是编译是出现: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。 接着就是一大堆的0x01等等。自己做了个Sample,仔细分析发现还是自己没有搞清楚。正确的操作如下: 1 创建C# DLL,需要指定
-
c++各种数据类型之间的转换方法
---- 使用C语言编程序,有时需要把一种数值(如float类型的数值)转换成另一种类型(如int类型)的数值使用,这时,我们就要用到类型强制转换运算符,如(int)、(float)等。但是在VC++中,当把一个float类型的数值转换成int类型时,有时会出现比较大的误差。我在工作过程中就碰到过,当我把一个值为1140.00的float型变量ftemp使用如下方法转换成int类型, itemp=(int)ftemp;这时,int型变量itemp的值为1139,误差1(在本文中,我称这种误差为“1误差”)。这么大的误差,我们是不能接受的。---- 经过深入的测试研究,我发现:在VC+
-
C++中数组过大无法运行的解决方法
今天写程序的时候突然发现C++中大数组居然无法运行,上网百度一阵之后,最终还是找到了解决方法,下面摘抄下来分享给大家。方法一: 在VC的Project setting里的link选项卡里把栈开大一点(windows里默认是4M) 方法二: 声明成全局或static的,这两种变量不压栈,想开多大都可以 &nbs
-
C++如何修改指针的地址
间接修改指针的地址 代码: // test for a pointer.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> using namespace std; typedef struct &nb
-
浅谈CString的效率问题
CString 的一个问题是它确实掩藏了一些低效率的东西。从另外一个方面讲,它也确实可以被实现得更加高效,你可能会说下面的代码: CString s = SomeCString1;s += SomeCString2;s += SomeCString3;s += ",";s += SomeCString4; 比起下面的代码来,效率要低多了: char s[1024];lstrcpy(s, SomeString1);lstrcat(s, SomeString2);lstrcat(s, SomeString 3);lstrcat(s, "
-
c++实现渐变填充窗体背景的方法
这种奇特的视觉效果制作起来相当简单,只需将屏幕分成许多行,每一行显示不同的颜色就可以了。渐变图形可以有许多种形式,有圆形渐变、矩形渐变、对角渐变等多种显示效果。要显示渐变,需使用到RGB 宏,每次使颜色值的各颜色分量稍有变化B:实现与应用 选择菜单 File | New Application,创建一个新的项目文件。在窗体 Form1 上放置一个 TColorDialog 控件,然后切换到Unit1.h,在 TForm1 的 private 部分加入两个变量的定义,分别用于设置起始颜色和终止颜色。private: // User declarations TColor Star
-
C++ exit()子程序终止函数与return()函数的差别
exit()子程序终止函数与return()函数的差别 在main函数中我们通常使用return (0);这样的方式返回一个值。 但这是限定在非void情况下的也就是void main()这样的形式。 exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束跳会操作系统。 但在如果把exit用在main内的时候无论main是否定义成void返回的值都是有效的,并且exit不需要考虑类型,exit(1)等价于return (1)#include <iostream> #include &