概述
熟悉一下字符类型,char, wchar_t, TCHAR,最熟悉的char是单字节字符,适用于ANSI编码;wchar_t是双字节的宽字符类型,适用于unicode编码;TCHAR是一个宏,在ANSI坏境下定义为char,unicode坏境下定义为wchar_t。
怎么来表示字符串?对,字符数组,要知道在C++语言里面,其实没有数组的数据结构,所谓数组,都是由指针+长度来表示。字符型指针const char *, const wchar_t *, const TCHAR *可以用来在不同的环境下表示字符串。再说相关的几个宏,LPSTR: long point string, 相当于char *; LPCSTR: long point const string, 相当于 const char *; LPCWSTR: long point const wide string, 相当于 const wchar_t *; LPCTSTR: 类似的,相当于 const TCHAR *; 这些都不要死记硬背,记着大写字母的意思即可猜出其含义。
一个字符串,比如说"北京2008",对应ANSI编码表示为 const char * cha = "北京2008"; unicode编码表示为 const wchar_t * wcha = L"北京2008"; 。在内存里以二进制存储,ANSI编码对应为 0x B1B1 BEA9 32 30 30 38,unicode编码为 0x 1753 AC4E 3200 3000 3000 3800。
回到上面,为什么字符型指针可以表示一个字符串?计算机找到这个指针,只能知道串首字符,这里因为字符串有个默认的结束符'