随笔分类 -  C++

摘要:待写. 阅读全文
posted @ 2012-01-16 15:52 瓜蛋 阅读(231) 评论(0) 推荐(0)
摘要:五.使用TCHARTCHAR是一种字符串类型,它让你在以MBCS和UNNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码。TCHAR的定义如下:#ifdef UNICODEtypedef wchar_t TCHAR;#elsetypedef char TCHAR;#endif所以用MBCS来build时,TCHAR是char,使用UNICODE时,TCHAR是wchar_t。还有一个宏来处理定义Unicode字符串常量时所需的L前缀。#ifdef UNICODE#define _T(x) L##x#else#define _T(x) x#endif##是一个 阅读全文
posted @ 2011-12-23 21:33 瓜蛋 阅读(538) 评论(0) 推荐(1)
摘要:字符基础--SBCS、MBCS、Unicode所有的 string 类都是以C-style字符串为基础的。C-style 字符串是字符数组。所以我们先介绍字符类型。这里有3种编码模式对应3种字符类型。第一种编码类型是单子节字符集(single-byte character set or SBCS)。在这种编码模式下,所有的字符都只用一个字节表示。ASCII是SBCS。一个字节表示的0用来标志SBCS字符串的结束。第二种编码模式是多字节字符集(multi-byte character set or MBCS)。一个MBCS编码包含一些一个字节长的字符,而另一些字符大于一个字节的长度。用在Wind 阅读全文
posted @ 2011-12-23 21:01 瓜蛋 阅读(402) 评论(0) 推荐(0)
摘要:一、一般用法我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.用法:#i nclude<cstdio>#i nclude<climits>using namespace std; #define STR(s) #s#define CONS(a,b) int(a##e##b)int main(){ printf(STR(vck)); // 输出字符串"vck" printf("%d\n", CONS(2,3)); // 2e3 输出:2000 return 0;}二、当宏参数是另一个宏的时候需要注意的是凡宏定义里有用& 阅读全文
posted @ 2011-10-24 22:58 瓜蛋 阅读(339) 评论(0) 推荐(0)
摘要:关于头文件和源文件的分别首先,我们可以将所有东西都放在一个.cpp文件内.然后编译器就将这个.cpp编译成.obj,obj是什么东西?就是编译单元了.一个程序,可以由一个编译单元组成,也可以有多个编译单元组成. 如果你不想让你的源代码变得很难阅读的话,就请使用多个编译单元吧.(一个函数不能放到两个编译单元里面,但两个以上就可以分别放在一个单元,也就是cpp里面) 那么就是一个.cpp对应一个.obj,然后将所有的obj链接起来(通过一个叫链接器的程序),组成一个.exe,也就是程序了. 如果一个.cpp要用到另一个.cpp定义的函数怎么办? 只需在这个.cpp种写上他的函数声明就可以了.其余. 阅读全文
posted @ 2011-10-09 14:45 瓜蛋 阅读(430) 评论(0) 推荐(0)
摘要:VC默认为__stdcall, BCB默认为__cdecl, Delphi默认为__fastcall。 由于BCB使用Delphi的VCL库, 所以也必须使用__fastcall。 关键字 调用规则 参数传递方向 返回 参数寄存器 堆栈的清除 __cdecl C调用规则 从右向左 EAX 无 调用者 __fastcall 寄存器 从左向右 EAX EAX、EBX、ECX 被调用者 __stdcal... 阅读全文
posted @ 2011-08-20 22:10 瓜蛋 阅读(825) 评论(0) 推荐(0)
摘要:2008-09-16 14:54 1049人阅读 评论(1) 收藏 举报 __cdecl和__stdcall都是函数调用规范(还有一个__fastcall),规定了参数出入栈的顺序和方法,如果只用VC编程的话可以不用关心,但是要在C++和Pascal等其他语言通信的时候就要注意了,只有用相同的方法才能够调用成功.另外,像printf这样接受可变个数参数的函数只有用cdecl才能够实现. __dec... 阅读全文
posted @ 2011-08-20 21:55 瓜蛋 阅读(496) 评论(0) 推荐(0)
摘要:1.概述许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:void a;这行语句编译时会出错,提示“illegal use of type 'void'”。不过,即使void a的编译不会出错,它也没有任何实际意义。void真正发 阅读全文
posted @ 2011-08-20 21:23 瓜蛋 阅读(538) 评论(0) 推荐(0)
摘要:char :单字节变量类型,最多表示256个字符, wchar_t :宽字节变量类型,用于表示Unicode字符, 它实际定义在<string.h>里:typedef unsigned short wchar_t。 为了让编译器识别Unicode字符串,必须以在前面加一个“L”,定义宽字节类型方法如下: wchar_t c = `A' ; wchar_t * p = L"Hello!" ; wch... 阅读全文
posted @ 2011-08-16 21:16 瓜蛋 阅读(393) 评论(0) 推荐(0)
摘要:上上周把手机丢了,可是原先备份的通讯录只有一个.vcf文件,里面含盖了我所有的联系人信息比如100个联系人信息他全存进一个.vcf文件了。换了新手机,怎么也导不到新手机里面,原因是新手机只支持一个.vcf文件里存一条通讯录的那种格式,比如100个联系人信息就得有100个.vcf文件放到内存卡里才能还原。 我用文本方式观察了一下,正好可以用c++处理一下,正好也练一个文件处理方面的基本功。代码如下,... 阅读全文
posted @ 2011-08-05 17:02 瓜蛋 阅读(2196) 评论(0) 推荐(0)
摘要:C++中的static 1.过程中的中的static 静态全局变量(在全局变量前加static)#include <iostream>using namespace std;void fn();static int n;//static globle varint main(){ n=20; cout<<n<<endl; fn();}void fn(){ n++; cout<<n<<endl;}静... 阅读全文
posted @ 2011-07-09 11:02 瓜蛋 阅读(419) 评论(0) 推荐(0)
摘要:1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。 2.从标准头文件说起某企业曾经给出如下的一道面试题:为什么标准头文件都有类似以下的结构? #ifndef __INCvxWorksh#define __INCvxWorksh #ifdef __cpl 阅读全文
posted @ 2011-06-01 22:33 瓜蛋 阅读(337) 评论(0) 推荐(0)
摘要:最近使用TinyXML进行C++ XML解析,感觉使用起来比较简单,很容易上手,本文给出一个使用TinyXML进行XML解析的简单例子,很多复杂的应用都可以基于本例子的方法来完成。以后的文章里会讲解使用Xerces进行C++ XML解析的例子,希望大家一起交流。 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。 DOM模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。 阅读全文
posted @ 2011-05-13 08:56 瓜蛋 阅读(792) 评论(0) 推荐(0)
摘要:#include <iostream>#pragma hdrstopusing std::cout;using std::endl;//---------------------------------------------------------------------------#pragma argsused//---------------------------------------------------------------------------class Base {public: Base() { }; virtual void DisplayMessag 阅读全文
posted @ 2011-04-09 11:39 瓜蛋 阅读(346) 评论(0) 推荐(0)
摘要:#include<iostream>#include <complex>using namespace std;//----------------------------------------------class Base//基类{public: virtual void f(int); virtual void f(double); virtual void g(int i=10);};void Base::f(int){ cout<<"Base::f(int)"<<endl;}void Base::f(double) 阅读全文
posted @ 2011-04-08 08:54 瓜蛋 阅读(330) 评论(0) 推荐(0)
摘要://分析以下程序的执行结果#include<iostream.h>#include<conio.h>class Sample{ int x; public: Sample(int a) { x=a; cout<<"constructing object:x="<<x<<endl; }}; void func(int n) { static Sample obj(n);}int main(){ func(1); func(10... 阅读全文
posted @ 2011-04-03 22:26 瓜蛋 阅读(534) 评论(1) 推荐(0)
摘要:#include <iostream>using namespace std;void change(int *a,int &b,int c)//指针作形参,前面加*号,引用作形参前面加&号。{ c=*a; b=3; *a=2;}int main(){ int a=1,b=2,c=3; change(&a,b,c);//指针作实参,前面加取地址符&,引用作实参,前面不加符号 cout<< a<< b<< c<<endl; return 0;} 阅读全文
posted @ 2011-03-31 15:39 瓜蛋 阅读(723) 评论(0) 推荐(0)
摘要:关于scanf的返回值,MSDN里是这样写的:Both scanf and wscanf return the number of fields successfully convertedand assigned; the return value does not include fields that were read butnot assigned. A return value of 0 indicates that no fields were assigned.The return value is EOF for an error or if the end-of-file 阅读全文
posted @ 2011-03-30 23:51 瓜蛋 阅读(374) 评论(0) 推荐(0)
摘要:搞不明白,为什么有时候在switch中定义变量没有问题,有时候又会报错。 刚刚又报了一个:1540-0246 (S) The "case" statement bypasses the initialization of "CString sRoamAreaCode". 这种不清楚的状况终于因为刚刚的一时兴起,google了下下~~ 原来只是加不加括号的区别。 因为C++中变量的作用域是相邻的两个大括号,假设下面的例子: int nChoose; switch(nChoose){ case 1: int i = 1; break; case 2: bre 阅读全文
posted @ 2011-03-25 03:18 瓜蛋 阅读(1046) 评论(0) 推荐(0)
摘要:#include <iostream.h>class A { public: virtual void print(void) { cout<<"A::print()"<<endl; } };class B:public A { public: virtual void print(void) { cout<<"B::print()"<<endl; }; }; class C:public B{public: virtual void print(void) { cout<<&quo 阅读全文
posted @ 2011-03-24 00:00 瓜蛋 阅读(518) 评论(2) 推荐(0)