C/C++
文章平均质量分 61
WeiKangC
积累,沉淀!
展开
-
C++编码规范
【规则1-1】 程序块要采用缩进风格编写,缩进的空格数为4个。 【规则1-2】 对齐与缩进只使用空格键,不使用TAB键。说明:以免用不同的编辑器阅读程序时,因TAB键所设置的空格数目不同而造成程序布局不整齐,不要使用会自动将8个空格变为一个TAB键的开发工具编辑代码。(可开发工具软件自动将TAB键转换为4个空格) 【规则1-3】 函数或过程的开始、结构的定义及循环、判断等语句中的代转载 2015-05-15 16:21:03 · 798 阅读 · 0 评论 -
字符串分割函数strtok使用
分解字符串为一组字符串。函数原型:char *strtok(char s[], const char *delim);s为要分解的字符串,delim为分隔符字符串。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。例如:strtok("abc,def,ghi",",翻译 2015-05-15 15:17:28 · 577 阅读 · 0 评论 -
SAFEARRAY与SAFEARRAYBOUND用法
SAFEARRAY与SAFEARRAYBOUND使用方法总结:SAFEARRAY介绍:SAFEARRAY的主要目的是用于automation中的数组型参数的传递。因为在网络环境中,数组是不能直接传递的,而必须将其包装成SafeArray。实质上SafeArray就是将通常的数组增加一个描述符,说明其维数、长度、边界、元素类型等信息。SafeArray也并不单独使用,而是将其再包原创 2015-05-15 15:40:31 · 875 阅读 · 0 评论 -
_variant_t与相关类型之间的转换
(1)与字符串CString: _variant_t temp; CString str_wtdw; str_wtdw=temp.bstrVal;(2)与整数int: _variant_t temp; int value; value=temp.iVal; //有时根据不同的整数类型需要采用相关的操作,例如: value=temp.intVal;转载 2015-05-15 16:14:08 · 1468 阅读 · 0 评论 -
C++中的结构体
结构体1、概述:对于结构体来讲,C语言当中就存在了,可以说它是类的原型,类可以说就是源于此由来,结构体与类最普通的有两点区别,第一是关键字不同,第二结构体中默认的访问属性是public,而类的默认访问属性是private。2、特点a).C++中当定义结构体变量时,可以省略关键字struct(指定义结构体变量的时候,可以省略结构体关键字struct);b).而在C语言当中原创 2015-05-16 14:52:50 · 660 阅读 · 0 评论 -
C++中的联合体类型和枚举类型
一、联合体:1、特点: a.) union 关键字可以省略 (指定义联合体变量的时候可以省略关键字) b.) 支持匿名联合2、定义格式:union 联合体名{ //定义成员. }; //";" 分号不能丢哦3、使用(直接上代码)void UnionFunEx(){ union //匿名联合定义 { int原创 2015-05-16 15:17:08 · 638 阅读 · 0 评论 -
C++中的bool类型
bool类型:1、bool类型是C++语言的基本数据类型,可以随处使用等……true\false. 真(1) 假(0); 非0即真,0即假。bool 类型不是c语言的基本数据类型 但是是可以使用bool类型,这个特性是在C99标准加上去的(C98还是没有加上去的,啰嗦了)。使用前要先包含 #include ,常识性的问题:C语言是在1972产生的。2、.说说C语言中的假:原创 2015-05-16 15:52:27 · 47392 阅读 · 0 评论 -
C++缺省参数的函数
C++缺省参数的函数定义:C++在声明函数原型时,可为一个或多个参数指定缺省参数值,以后调用此函数,若省略其中某一参数,C++自动地以缺省值作为相应参数的值。例如函数原型说明为: int add(int x=15,float y=20.56); 当进行函数调用时,可以有以下几种形式: 1) add(100,79.8); // x=100,y=79.8 2)原创 2015-05-16 17:09:16 · 10137 阅读 · 0 评论 -
C++内联函数
一、C++内联函数inline(小心,不是online),翻译成“内联”或“内嵌”。意指:当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置。这样做的好处是省去了调用的过程,加快程序运行速度。(函数的调用过程,由于有前面所说的参数入栈等操作,所以总要多占用一些时间)。这样做的不好处:由于每当代码调用到内联函数,就需要在调用处直接插入一段该函数的原创 2015-05-16 17:29:00 · 435 阅读 · 0 评论 -
C++当中的内存分配
一、C++当中的内存分配C++ new deleteint *pint* p[4]; 指针数组int (*p)[4]; 数组指针 二维int* p(); 返回值是指针的函数 即 指针函数.int (*p)();函数针指二、C语言的内存分配方式:malloc/calloc/realloc/ free函数的功能与区别原创 2015-05-16 17:40:00 · 456 阅读 · 0 评论 -
C++命名空间
命名空间(也可以称为: 名字空间) 英文单词:namespace定义:【这段话引字百度百科里面的解释】【命名空间是用来组织和重用代码的编译单元。如同名字一样的意思,NameSpace(名字空间),之所以出来这样一个东西,是因为人类可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起原创 2015-05-16 11:39:34 · 472 阅读 · 0 评论 -
C++中的函数重载
函数重载1、C++编程语言中,在同一个作用域下,函数名相同,参数列表不同的若干个函数,这些前提条件要满足。才能构造函数函数重载。补充一句,与区域中函数的返回值无关。2、参数列表不同: 1).函数参数的类型不同 namespace weikangc { void print(int a)原创 2015-05-16 16:09:55 · 446 阅读 · 0 评论 -
C++中的哑无
1、哑元 a.) 只有类型没有参数名的参数,就叫哑元 如:int Fun(int a,int b,double); //如第三个参数的这种情况就叫哑元 b.) 哑元作用 1).向下兼容 如:函数 int Fun(int a,int b,double c);//2010年写的函数,在2011年的时候由于功能升级,不在需要第三原创 2015-05-16 17:12:39 · 550 阅读 · 0 评论 -
C++当中的引用
1、引用 引用不是独立的数据类型,实际上是对变量起了别名. 如: int a = 66; int& b = a; //相当于给a起了个别名. 2、引用和指针的比较 (1)变量 指针 引用 2.1.引用必须初始化,指针可以不初始化 int a = 66;原创 2015-05-16 17:47:25 · 401 阅读 · 0 评论 -
C++中的类型转换
类型转换C++中的类型转换太繁琐了,使用起来不方便。我一般是很少使用的。C++之父也建议尽量不要使用C++的转换算子等。隐式类型转换:char -> int显示类型转换(强制类型转换)C Type int -> char, char c = 'a'; int i = (int)c;C++ Type int i = int(c);1).静态类型转换 目标类型原创 2015-05-16 18:02:41 · 356 阅读 · 0 评论 -
主函数参数 char* argv[] 介绍
char* argv[] --主函数的参数int main(int argc, char* argv[]){printf("%d\r\n",argc); //打出4 --位置参数总个数printf("%s\r\n",argv[0]);//打出ad.exe(程序名是位置参0)printf("%s\r\n",argv[1]);//打出aa(位置参数1)printf("%s\原创 2015-05-15 15:05:05 · 1166 阅读 · 0 评论 -
分割字符串的AfxExtractSubString函数
函数原型:BOOL AfxExtractSubString(CString& rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep = '\n')参数说明:rString 保存输出的子字符串lpszFullString 待分割的字符串iSubString原创 2015-05-15 15:08:20 · 1181 阅读 · 0 评论 -
C++进阶书籍列表
经典著作入门书籍《C++ Primer 中文版(第5版)》《C++ Primer (Fifth Edition)》《C++ Primer Plus 中文版(第六版)》《C++ Primer Plus (Sixth Edition)》进阶书籍《Thinking in C++》《C++编程思想》《The C++ Programming Language (Fourth转载 2015-05-15 15:37:42 · 856 阅读 · 0 评论 -
_splitpath函数使用
_splitpath需要的头文件是:函数原型如下:void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext);其中包含5个参数,第一个是待处理的完整的文件名路径,例如:“c:\windows\myfile.txt”,当然这个文件名也可以不是那么完整,即使是"翻译 2015-05-15 14:37:14 · 17223 阅读 · 0 评论 -
C/C++判断文件文件夹是否存在
一、判断文件夹是否存在: 1.用CreateDirectory(".//FileManege",NULL);如果文件夹FileManege不存在,则创建。 2.或者if(_access(".//FileManege",0)==-1),表示FileManege不存在。 3.或者BOOL PathIsDirectory(LPCTSTR pszPath); //要包含转载 2015-05-15 16:08:02 · 612 阅读 · 0 评论 -
C++内存分配方式详解
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。 堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new 就要对应一个 delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。堆可以动转载 2015-05-21 11:15:22 · 367 阅读 · 0 评论 -
C++学习之深入理解虚函数--虚函数表解析
C++ 虚函数表解析转自:http://blog.csdn.net/haoel/article/details/1948051/ 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的转载 2015-05-21 11:26:57 · 325 阅读 · 0 评论 -
C++ 常量类型 const 详解
const是C++编程语言的一个特性,是不同于C的一个重要的地方,编程中使用它可以提高我们的效率和健壮性,下面让我们来说道说道,by weikangc 2015年05月21日1、什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。2、为什么引入const? const 推出的初始目的,正是为转载 2015-05-21 10:35:22 · 1114 阅读 · 0 评论 -
VC++ warning C4786 详解
VC++ warning C4786 详解在使用std::list的过程中, 编译器报warning 如下:warning C4786: 'std::reverse_bidirectional_iterator,std::allocator >,std::allocator,std::allocator > > >::iterator,std::basic_string原创 2015-05-28 11:54:33 · 1821 阅读 · 1 评论 -
数据区,代码区,堆栈区,操作系统堆栈
数据区,代码区,堆栈区,操作系统堆栈堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆转载 2015-05-21 17:56:42 · 1705 阅读 · 1 评论 -
C++中的typeid关键字
用以返回一个变量或数据类型的“类型”。用法如下:coutint a;cout输出如下:intint如果有类A,且有虚函数,类B,C,D都是从类A派生的,且都重定义了类A中的虚函数,这时有类A的指针p,再把对象类B的对象的地址赋给指针p,则typeid(p).name()将返回的类型将是A*, 因为这里的p表示的是一个指针, 该指针是类型为A的指针, 所以返回转载 2015-05-21 20:32:57 · 400 阅读 · 0 评论 -
C++著名类库
1、C++各大有名库的介绍——C++标准库 2、C++各大有名库的介绍——准标准库Boost 3、C++各大有名库的介绍——GUI 4、C++各大有名库的介绍——网络通信 5、C++各大有名库的介绍——XML 6、C++各大有名库的介绍——科学计算 7、C++各大有名库的介绍——游戏开发 8、C++各大有名库的介绍——线程 9、C++各大有名库的介绍——序列化转载 2015-05-29 11:32:00 · 514 阅读 · 0 评论 -
C++ 用libcurl库进行http 网络通讯编程
一、LibCurl基本编程框架libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。想要知道更多关于libcurl的介绍,可以到官网http转载 2015-06-19 08:35:31 · 520 阅读 · 0 评论 -
C++面向对象编程思想
1、概述: 面向对象编程思想是很早就提出来早在1967年的时候,在挪威计算中心的Kisten Nygaard和Ole Johan Dahl开发了Simula67语言,它提供了比子程序更高一级的抽象和封装,引入了数据抽象和类的概念,这种语言被认为是第一个面向对象语言。 2、对象 什么是对象,这个概念,无论是身经百战的老程序员,还是入行大有年数的程序员来说,一问起来原创 2015-05-19 11:13:15 · 1542 阅读 · 0 评论 -
SHGetSpecialFolderLocation函数
函数原型: WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation( HWND hwndOwner, int nFolder, LPITEMIDLIST* ppidl ); 函数功能: 该函数获取一个特殊的文件夹的位置,比如我的电脑,回收站,台式机,打印机,字体,或各种文件系统的目录。函数原型:WINSHE转载 2015-06-25 15:46:50 · 3712 阅读 · 1 评论 -
C++构造函数
C++构造函数1、概念和定义格式 构造函数概念:函数名和类名相同,并且没有返回值类型的函数(void也不能写) 定义格式: class 类名 { public:类名(形参表){ } }; 注意: a.当对象被创建时构造函数会被自动调用,用于给对象中的成员变量进行初始化,构造函数不能手动调用. b.如果自定义类中没原创 2015-05-19 17:40:32 · 601 阅读 · 0 评论 -
BROWSEINFO的结构介绍之获取文件(夹)路径
Visual C++(VC)中,BROWSEINFO结构中包含有用户选中目录的重要信息。(1)BROWSEINFO结构结构定义typedef struct_browseinfo{HWND hwndOwner;LPCITEMIDLIST pidlRoot;LPSTR pszDisplayName;LPCSTR lpszTitle;转载 2015-06-25 15:32:45 · 1647 阅读 · 0 评论 -
C++对象的内存布局
07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非常简单的,主要是为了说明一些机理上的问题,也是为了图一些表达上方便和简单。不想,这篇文章成为了打开C++对象模型内存布局的一个引子,引发了大家对C++转载 2015-06-26 18:04:56 · 318 阅读 · 0 评论 -
C++异常捕获使用
一.异常 C语言:一般使用函数的返回值来表示是否出错. C++语言:使用异常机制进行处理异常语法: (1)异常捕获 try{可能发生异常的语句;(调用函数语句)}catch(异常类型 名字){异常处理语解码器}catch(异常类型2 名字2){异常处理语句}//... 可以有多个catch(...)分支(2)原创 2015-05-25 17:29:21 · 814 阅读 · 0 评论 -
C++面向对象编程之多态
一、多态1、先看一下例子class CShape{private: int m_x; int m_y;public: CShape(int x = 0 , int y = 0 ):m_x(x),m_y(y){} virtual void Draw() //虚函数 { cout<<"CShape 中的Draw函数"<<endl; }};class CCircle原创 2015-05-25 17:03:39 · 492 阅读 · 0 评论 -
C++面向对象编程之继承
一、 封装和继承 1.1 封装的概念 封装:通过访问控制属性对类类型中的属性和行为进行打包和限制.1.2 继承:通过一种机制表达出类型之间的共性和特性的方式.继承基本语法:class 子类名 : 继承方式1 父类1,继承方式2 父类2...{ 类的定义};继承方式: public 公有方式 private 私有方式 pro原创 2015-05-25 16:02:17 · 535 阅读 · 0 评论 -
vs2010项目属性配置
vs2010使用方案管理项目,一个解决方案下可包含多个项目。默认情况下,项目属性的设置的目录起点为项目配置文件所在的位置,实际上就是项目头文件和源文件所在的位置。vs2010中默认建立C++项目,则解决方案总目录下包含一个sln和一个项目文件夹,在vs2010编译器中生成debug和release解决方案后,总目录下还会生成对应的debug和release目录,存放最终生成的exe转载 2015-08-09 19:51:44 · 676 阅读 · 0 评论 -
LoadImage()的使用
系统中的定义是:WINUSERAPIHANDLEWINAPILoadImageA( HINSTANCE, LPCSTR, UINT, int, int, UINT);WINUSERAPIHANDLEWINAPILoadImageW( HINSTANCE, LPCWSTR,转载 2015-08-09 20:36:30 · 8820 阅读 · 0 评论 -
释析#pragma pack(push,n) #pragma pack(n) #pragma pack() #pragma pack(pop)
释析#pragma pack(push,n) #pragma pack(n) #pragma pack() #pragma pack(pop)原创 2015-08-09 17:22:12 · 746 阅读 · 0 评论 -
C中预编译详解
C中预编译详解 预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C 语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理程序。尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的。预处理过程读入源代码,检转载 2015-08-09 18:00:47 · 452 阅读 · 0 评论