有一字符串中有全角和半角混杂,如何进行全部转换为全角?请教高手,不胜感激!!!

解决方案 »

  1.   

    //全部转换为全角
    BOOL Half2All(const BYTE *pBuf , int in_size , BYTE *pOut , int *out_size)  
    {  
    if(!pBuf)  
    {  
    return FALSE;  
    }  
    if(!pOut)  
    {  
    return FALSE;  
    }  

    if(*out_size < (in_size * 2 + 1))  
    {  
    *out_size = in_size * 2 + 1;  
    return FALSE;  
    }  

    BYTE *pBt1 = new BYTE[in_size + 1];  
    memset(pBt1 , 0 , in_size+1);  
    memcpy(pBt1 , pBuf , in_size);  

    BYTE *pBt2 = pOut;  
    for(int i = 0 ; i <= in_size ; i++)  
    {  
    if(*pBt1 == 0x00)  
    {  
    *pBt2++ = *pBt1++;  
    }  
    else if(*pBt1 == 0xa3)  
    {  
    *pBt2++ = *pBt1++;  
    *pBt2++ = *pBt1++;  
    }  
    else if(*pBt1 < 0xa3)  
    {  
    *pBt2++ = 0xa3;  
    *pBt2++ = 0x80 + *pBt1++;  
    }  
    else  
    {  
    *pBt2++ = *pBt1++;  
    }  
    }  
    return TRUE;  
    }  
    //示例
      void main()
      {
      BYTE *b = new BYTE[8];
      memcpy(b, "123345",8);
      BYTE *a = new BYTE[16];
      memset(a,0,16);
      int i = 20;
      Half2All(b , 8 , a , &i);
      cout<<b<<'\n'<<a<<'\n';
      delete []b;
      delete []a;
      }