C++ - 文章列表
-
Format string is not a string literal(potentially insecure) 警告的解决方法
NetWork *nw=[NetWork init];NSLog([nw Query:@"a.aspx?a=validatenumber&number=111"]);xcode4.2开发时,输入调试信息,如果调用一个方法返回的字符串,会报"Format string is not a string literal(potentially insecure) "这样的一个警告。要解决这个问题,就得这样写NSLog([nw Query:@"a.aspx?a=validatenumber&num
-
C++中如何转换类型 类型转换符的使用方法
C++的四个类型转换运算符已经有很久了,但一直没有弄清楚它们的用法,今天看到一本书上的解释,才大致地的了解了其具体的用法.具体归纳如下:reinterpret_cast该函数将一个类型的指针转换为另一个类型的指针.这种转换不用修改指针变量值存放格式(不改变指针变量值),只需在编译时重新解释指针的类型就可做到.reinterpret_cast 可以将指针值转换为一个整型数,但不能用于非指针类型的转换.例://基本类型指针的类型转换double d=9.2;double* pd = &d;int *p
-
告诉大家如何使用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