wchar_t and char

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;

         }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值