Example:
int n_wchar_t = sizeof(wchar_t); //n_wchar_t = 2
int n_char = sizeof(char); //n_char = 1
由上面例子可知,wchar_t和char的长度是不同的。
Example:
wchar_t * wch = L"abcdef";
int n_wch = wcslen(wch); //n_wch = 6
char * ch = "abcdef";
int n_ch = strlen(ch); //n_ch = 6
由上面例子可知,wcslen与strlen的功能相同,其他的也只是前缀不同,功能都相同。
Example:
char *ch = "abcdef";
wchar_t *wch ;
wch = (wchar_t*)ch ;
int n_ch = strlen(ch); //n_ch = 6
int n_wch = wcslen(wch); //n_wch = 3
由上面例子可知,char 指针变量强制转换为wchar_t指针变量后,会把 char 指针指向的内存单元中的两个字符当作一个字符,会出现不可预见的结果,可以用断点来调试,可以看到这种现象。
Example:
char ch = 'c';
wchar_t wch ;
wch = ch ; //wch = 'c'
由上面例子可知,只有一个字符时不会出现错误。
char* 转化为wchar_t*的例子
char *src = "adscd";
int dest_len ;
int j = strlen(src); //j = 5
dest_len = MultiByteToWideChar(CP_ACP,0,src,-1,NULL,0); //取转换时wchar_t*变量所需长度 dest_len = 6
wchar_t *dest = new wchar_t[dest_len]; //dest = L"adscd"
id(dest = NULL)
return;
int i = wcslen(dest); //i = 5
if(dest)
{
delete [] dest;
dest = NULL;
}