VC++中的char,wchar_t,TCHAR(转载)
摘要:总体简介:由于字符编码的不同,在C++中有三种对于字符类型:char, wchar_t , TCHAR。其实TCHAR不能算作一种类型,他紧紧是一个宏。我们都知道,宏在预编译的时候会被替换成相应的内容。TCHAR 在使用多字节编码时被定义成char,在Unicode编码时定义成wchar_t。1.VC++中的char,wchar_t,TCHAR大家一起做一个项目,经常发现有的人爱用strcpy等标准ANSI函数,有的人爱用_tXXXX函数,这个问题曾经搞的很混乱。为了统一,有必要把来龙去脉搞清楚。为了搞清这些函数,就必须理请几种字符类型的写法。char就不用说了,先说一些wchar_t。wch
阅读全文
posted @
2010-12-24 10:30
SweetDream
阅读(1278)
推荐(0)
C++备忘录(记录一些不常使用的语法规则)
摘要:1.类成员函数的回调class MyClass{public: typedef void (MyClass::*CallBack)(int nParam1, int nParam2); void TestCallBack(int nParam1, int nParam2) { return; }};void main(){ MyClass::CallBack pfCallBack = &...
阅读全文
posted @
2009-03-11 20:24
SweetDream
阅读(298)
推荐(0)
函数返回引用或指针的选择
摘要:引用作为返回值和返回指针相比的一个好处就是不用在每次使用的时候判断null,但是并不是任何时候返回值都有效,那么什么时候用返回引用什么时候返回指针,答案就是对于一些类似于类成员变量这样可以保证一定存在的对象返回引用,否则返回指针。另一个做法是对于无效的返回值使用一个NullObj,这个Obj继承于真实对象类型。
阅读全文
posted @
2008-11-16 19:52
SweetDream
阅读(700)
推荐(0)
C++数据类型速查
摘要:Type Name Bytes Other Names Range of Values int ...
阅读全文
posted @
2008-10-31 17:14
SweetDream
阅读(297)
推荐(0)
C++不定参数
摘要:#define va_start _crt_va_start#define va_arg _crt_va_arg#define va_end _crt_va_endtypedef char * va_list;#define _crt_va_start(ap,v) ( ap = (va_list)_ADDRESSOF(v) +_INTSIZEOF(v))#define _crt_va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t))- _INTSIZEOF(t)))#define _crt_va_end(ap) ( ap =(va_list)0 )#ifdef
阅读全文
posted @
2008-10-16 15:18
SweetDream
阅读(595)
推荐(0)
std::string 一些记录
摘要:Std::string C++标准库中的string class 使你可以将string 当作一个一般的型别而不会令用户感觉有任何问题。你可以像对待基本型别那样地复制、赋值、和比较string,再不必担心内存是否足够、占用内存实际长度等问题。 由于字符串字面常数(“Hello,World”)的型别并非string,因此在新的string和C-String之间必须存在一种强烈关系:在string的操...
阅读全文
posted @
2007-08-09 00:36
SweetDream
阅读(2441)
推荐(0)
C/C++中函数指针的含义(转)
摘要:C/C++中函数指针的含义 函数存放在内存的代码区域内,它们同样有地址,我们如何能获得函数的地址呢?如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。 定义一个指向函数的指针用如下的形式,以上面的test()为例: int (*fp)(int a);...
阅读全文
posted @
2007-08-08 08:29
SweetDream
阅读(445)
推荐(0)
结构体最后的长度为0或者1的数组[转]
摘要:在Linux系统里,/usr/include/linux/if_pppox.h里面有这样一个结构: struct pppoe_tag { __u16 tag_type; __u16 tag_len; char tag_data[0]; } __attribute ((packed)); 最后一个成员为可变长的数组,对于TLV(Type-Length-Value)形式的结...
阅读全文
posted @
2007-06-10 16:37
SweetDream
阅读(2529)
推荐(1)
[C++基础] 取系统时间和随机数
摘要:获取系统时间 #include #include using namespace std; int main(void) { struct tm *times; //定义时间指针变量.....(只能用指针) time_t t; //定义系统时间变量,供提供系统时间 t = time(0); /...
阅读全文
posted @
2006-07-19 22:10
SweetDream
[C++语法] 关键字typedef用法(转)
摘要:C/C++语言中的typedef相信大家已经不陌生,本文对C/C++语言关键字typedef的各种用法作一个介绍。 typedef,顾名思义,为“类型定义”,可以解释为:将一种数据类型定义为某一个标识符,在程序中使用该标识符来实现相应数据类型变量的定义。例如: typedef unsigned int UINT; int main (int argc, char *argv[]) { ...
阅读全文
posted @
2006-05-10 10:27
SweetDream
阅读(12024)
推荐(0)
Effective C++笔记(3) 构造函数,析构函数和赋值操作符
摘要:条款11: 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符 理由: 使用缺省的拷贝和复制会产生一系列不良结果--例如在进行字符串的拷贝时,被拷贝指针曾指向的内存永远不会被删除而产生内存泄露;或者两个指针中任何一个调用析构函数都将导致另一指针指向的那块内存被删除等。 当用一个已经初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候,拷贝构造函数就会被自动调用: 1.当对象直接作为...
阅读全文
posted @
2006-04-21 13:00
SweetDream
阅读(868)
推荐(0)
对文件目录的操作
摘要:1. chdir(dir.c_str()) 改变默认目录。dir.c_str是基于当前路径的。比如dir.c_str为” ./” 那么就什么也没改变还是在默认的路径。其中dir.c_str()为基于C的字符串。 2.char *getcwd(char *buffer,size_t size); 获得当前工作路径,我们提供一个size大小的buffer,getcwd会把我们当前的路径考到buffe...
阅读全文
posted @
2006-04-13 10:30
SweetDream
阅读(915)
推荐(0)
Effective C++笔记(2) 内存管理
摘要:条款5:对应的new和delete要采用相同的形式 理由: 否则会导致不可预见的结果 注意: 1、必须自己告诉delete要被删除的指针指向的是单个对象呢还是对象数组,后者需要使用"[ ]"(eg: delete [ ] stringptr2;),在删除单个对象时使用"[ ]"或者在删除数组对象的时候没有使用"[ ]"都将导致不可预见的结果。解决方法Scott总结为"如果你调用new时用了[ ]...
阅读全文
posted @
2006-02-22 22:56
SweetDream
阅读(311)
推荐(0)
Effective C++笔记(1) 从C转向C++
摘要:条款1:尽量用const和inline(编译器)而不用#define(预处理) 理由:1.#define(预处理)进入编译器之前预处理程序会将符号去掉,代以常量,在编译的时候报错信息指向常量而难以理解,定义一个const常量能很好的解决这个问题;2.用#define来实现那些看起来象函数而又不会导致函数调用的宏:#define max(a,b) ((a) > (b) ? (a) : (b))...
阅读全文
posted @
2006-01-15 19:25
SweetDream
阅读(394)
推荐(0)