Windows系统自带的简繁体转换的代码

#include  <windows.h>  
#include  <iostream>  
#include  <string>  
#include  <algorithm>  
#include  <conio.h>  
char  *  j2f(char  *s)  
{  
           int  n=strlen(s);    
           int  r=LCMapString(MAKELCID(MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),SORT_CHINESE_PRC),LCMAP_TRADITIONAL_CHINESE,s,strlen(s),  NULL,0);  
           if  (!r)  return  NULL;  
           char  *ft=new  char[r+1];  
           r=LCMapString(MAKELCID(MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),SORT_CHINESE_PRC),LCMAP_TRADITIONAL_CHINESE,s,strlen(s),ft,r+1);//这个api搞掂简体转繁体,下面会打?繁体出来  
           if  (r)  {  
                       ft[r]=0;    
                         
                       wchar_t  *pws=new  wchar_t[r+1];  
                       int  r1=MultiByteToWideChar(936,0,ft,r,pws,r+1);  
                       BOOL  f=FALSE;  
                       r1=WideCharToMultiByte(950,0,pws,r1,ft,r+1,"?",&f);//代码页切换搞掂gb->big5  
                       ft[r1]=0;  
 
                       delete  []  pws;  
           }  
                 strncpy(s,ft  strlen(s));  
           delete  []ft;  
                 return  s;  
 
}  
 
返回NULL表示失败,如果s为const型,需要提供输出缓冲区,否则你必须释放这个函数返回来的指针的空间。将  
strncpy(s,ft,strlen(s));  
return  s;  
这两句的改为缓冲区地址即可。

你可能感兴趣的:(Algorithm,windows,null,delete,include,iostream)