字符 类型
-,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 五,中关于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中现有的例子: LPTSTR 的原型是WCHAR * 八,样将一个CArray<CStringArray*,CStringArray*>类型变量赋值给另一个CArray变量 CArray <CStringArray*,CStringArray*> aa; CStringArray类支持CString对象数组。
|