在vc2005中,调用setwindowtext时,第二个参数用char[]会出错,建议使用TCHAR,因为vc2005默认为unicode。
如果是Unicode编程的话建议你使用TCHAR(16位w_char),不要用char,实际上是不是Unicode编程都好,使用TCHAR是个好习惯。 如果你想转换到Unicode的话可以用,MultiByteToWideChar函数。
写代码时应注意: 1:字符串前要加上_T或者_TEXT.比如:_T(“dadad”); 2:将char换成TCHAR (unsigned char必须去掉unsigned) 3:将str函数换成_tcs函数 4:printf函数族必须修改为wprintf,不过要注意千万不要使用wprintf函数来解析char型. 5:对于字符串和整型的转换,尽量使用_itot和_ttoi来进行相互转化,不要使用atoi或itoa。 unicode方式下CString与wchar_t是通用的 就是说在vs2005中, WCHAR str=L"字符串"; CString str1=str; 是可以通过编译的,但到vc6中就不可以了:字符串声明类型。一般使用通用即可,让程序自动根据所设的编码进行设定。
通用 MFC 数据类型 |
映射到 ASCII |
映射到 UNICODE |
注释 |
_TCHAR |
char |
wchar_t |
_TCHAR 是一个映射宏,当定义 UNICODE 时,该数据类型映射到 wchar_t,如果没有定义 UNICODE,那么它映射到 char。 |
_T 或 _TEXT |
char 常量字符串 |
wchar_t 常量字符串 |
功能与宏相同,在 ASCII 模式下,它们被忽略,也就是说被预处理器删除掉,但是如果定义了UNICODE, 则它们会将常量字符串转换成等价的 UNICODE 。 |
LPTSTR |
char*, LPSTR(Win32) |
wchar_t* |
可移植的32位字符串指针。它将字符类型映射到工程设置的类型。 |
LPCTSTR |
const char*, LPCSTR(Win32) |
const wchar_t* |
可移植的32位常量字符串指针。它将字符类型常量映射到工程设置的类型。 |
2. UNICODE WCHAR*到 char * CString str(wchar*); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// LPCSTR 32-bit 指针,指向一个常量字串 LPSTR 32-bit 指针,指向一个字串 LPCTSTR 32-bit 指针,指向一个常量字串。此字串可移植到Unicode 和DBCS LPTSTR 32-bit 指针,指向一个字串。此字串可移植到Unicode 和DBCS LPWSTR 32-bit 指针,指向一个unicode字符串的指针 LPCWSTR 32-bit 指针, 指向一个unicode字符串常量的指针 前面的L代表LONG,P就是指针的意思,C就是constant的意思, W是wide的意思,STR就是string的意思