二:字符 类型

来源:互联网 发布:淘宝新店铺转让 编辑:程序博客网 时间:2024/05/22 17:57

字符 类型

2010-09-30 13:09

-,L"hello, world" 这个字符串保存的是wchar的 宽字符

二,_T"hello, world" 如果工程定义的UNICDE则这个字符串是按wchar方式保存的,如果没有定义则是按char方式保存的

三,wchar_t是C/C++的字符数据类型,char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,char型无法表示。wchar_t数据类型一般为16位或32位,但不同的C或C++库有不同的规定,如GNU Libc规定wchar_t为32位[1],总之,wchar_t所能表示的字符数远超char型。  CString compname= compname=CString((wchar_t *)wparam);

,#define DWORD unsigned long
表示一个32位无符号整型数,或用来表示段地址和段地址的偏移量;Windows下经常用来保存地址(或者存放指针).

中关于BYTE, WORD, DWORD及其与2, 16进制之间的关系总结

VC中的变量类型不是一般的多,什么BYTE, WORD, DWORD, LPARAM, WPARAM, USHORT, UCHAR...像我这样VC还处于入门级别的人很容易混淆(实事求是地讲我从来没搞明白过*^_^*)。越是这样越是从基础开始补啊,要不然到将来对VC根深入的学习时都不知道问题出在哪里。
    总结一下,BYTE, WORD, DWORD和进制之间的关系,当时在Digital circuit课程中感觉硬件学的还可以,所以现在理解并不困难。
    具体地讲, VC中,一个BYTE类型代表8个二进制位,也就是类似00000000~11111111一串二进制数。
一个WORD类型等价于两个BYTE, 也就是一组16个二进制位标示的数。 而一个DWORD等于两个WORD,也就是32个二进制位。
    每4个二进制位等价于一个16进制数的基数,所以, 一个字节可以用二个16进制基数来表示。 16进制基数与BYTE, WORD, DWORD有如下关系。
   BYTE = 0xFF FF
   WORD = 2 * BYTE = 0xFF FF FF FF
   DWORD = 2 * WORD = 4 * BYTE = 0x FF FF FF FF FF FF FF FF
   当在VC中使用 << 或 >> 操作符时,逻辑上应该保证尽量使用无符号数(这样可以减少因为符号位在移动后带来的错误几率), 移动的位数尽量小于 变量类型的二进制位数, 否则产生不可预料的错误。

int a = 31;

输出:Debug/Release下均为 unsigned int, int, 1, -1, 1

六,CString 转化 int 类型
如 CString str=“123”
int i = _wtoi(str);int atoi( const char *str );
int   _wtoi( const wchar_t *str );
int   _atoi_l( const char *str, _locale_t locale);
int   _wtoi_l( const wchar_t *str, _locale_t locale );

 

七,CString 转化 LPTSTR

 msdn中现有的例子:
CString   theString(    "This   is   a   test "   );
LPTSTR   lpsz   =   new   TCHAR[theString.GetLength()+1];
_tcscpy(lpsz,   theString);
//...   modify   lpsz   as   much   as   you   want 

LPTSTR 的原型是WCHAR *
CString mtestsourse;
LPTSTR testsourse;
testsourse=mtestsourse.GetBuffer(0);

八,样将一个CArray<CStringArray*,CStringArray*>类型变量赋值给另一个CArray变量

CArray <CStringArray*,CStringArray*>     aa;
CArray <CStringArray*,CStringArray*>     bb;
for   (int   i=0;i <aa.GetUpperBound();i++)
{
CStringArray   *   pt1   =   new   CStringArray();
pt1   =   aa.GetAt(i);
bb.SetAt(i,pt1);
}
九,CStringArray 的用法

CStringArray类支持CString对象数组。
构造CStringArray构造一个空的CString对象数组绑定GetSize获取这个数组中的元素数目SetSize设置这个数组中包含的元素数目GetUpperBound返回最大的有效索引操作符FreeExtra释放当前数组边界之外的未使用的所有内存RemoveAll从数组中删除所有元素元素访问GetAt返回位于给定索引处的值SetAt设置给定索引处的元素的值;不得将数组增大ElementAt返回对数组中的某一元素指针的临时引用GetData对数组中的元素允许的访问。可以是NULL扩大数组SetAtGrow设置给定索引处的值,如果必要的话可以增长数组Add在数组的末尾添加一个元素;可根据需要增长数组Append向数组中添加另一个数组;如果必要的话可增长数组Copy将另一个数组拷贝到此数组中;如果必要的话可增长数组插入/删除InsertAt在指定索引处插入一个元素(或者是另一个数组中的所有元素)RemoveAt删除指定索引处的一个元素操作符operator []设置或获取在指定索引处的元素