VC++----简繁体转换版本2

来源:互联网 发布:淘宝传图片教程视频 编辑:程序博客网 时间:2024/06/01 08:31

转载请注明出处:http://blog.csdn.net/yf210yf/article/details/7854021

[cpp] view plaincopyprint?
  1. #include <iostream>  
  2. #include <atlstr.h>  
  3. #include <locale.h>  
  4. using namespace std;  
  5.   
  6. char * BIG52GBK(char   *szBuf) ;  
  7. char * GBK2BIG5(char   *szBuf) ;  
  8. char * GB2GBK(char   *szBuf) ;  
  9. char * GBK2GB(char   *szBuf) ;  
  10.   
  11. void main()  
  12. {  
  13.     CString   cStr1;   
  14.   
  15.     char str_big5[100] = "い地チ㎝瓣";      
  16.     char * rlt_big5=BIG52GBK(str_big5);  
  17.     cStr1.Format( "%s",rlt_big5);   
  18.     cout<<rlt_big5<<endl;  
  19.   
  20.     char str_gbk[100] = "中華人民共和國";      
  21.     char * rlt_gbk=GBK2BIG5(str_gbk);  
  22.     cStr1.Format( "%s",rlt_gbk);   
  23.     cout<<rlt_gbk<<endl;  
  24.   
  25.     char str_gb2[100] = "中华人民共和国";      
  26.     char * rlt_gb2=GB2GBK(str_gb2);  
  27.     cStr1.Format( "%s",rlt_gb2);   
  28.     cout<<rlt_gb2<<endl;  
  29.   
  30.     char str_gbk2[100] = "中華人民共和國";      
  31.     char * rlt_gbk2=GBK2GB(str_gbk2);  
  32.     cStr1.Format( "%s",rlt_gbk2);   
  33.     cout<<rlt_gbk2<<endl;  
  34.   
  35. }  
  36.   
  37. //---------------------------------------------------------------------------   
  38. //   大五码转GBK码:   
  39. //   い地チ㎝瓣   -->   中華人民共和國   
  40. char * BIG52GBK(char   *szBuf)   
  41. {   
  42.         if(!strcmp(szBuf,   " "))   
  43.         return 0;   
  44.         int   nStrLen   =   strlen(szBuf);   
  45.         wchar_t   *pws   =   new   wchar_t[nStrLen   +   1];   
  46.   
  47.         int   nReturn   =   MultiByteToWideChar(950,   0,   szBuf,   nStrLen,   pws,   nStrLen   +   1);   
  48.         BOOL   bValue   =   false;   
  49.         nReturn   =   WideCharToMultiByte(936,   0,   pws,   nReturn,   szBuf,   nStrLen   +   1,   "? ",   &bValue);   
  50.         szBuf[nReturn]   =   0;   
  51.         return szBuf;  
  52. }   
  53. //---------------------------------------------------------------------------   
  54. //   GBK转大五码   
  55. //   中華人民共和國   -->   い地チ㎝瓣   
  56. char * GBK2BIG5(char   *szBuf)   
  57. {   
  58.         if(!strcmp(szBuf,   " "))   
  59.         return   0;   
  60.         int   nStrLen   =   strlen(szBuf);   
  61.         wchar_t   *pws   =   new   wchar_t[nStrLen   +   1];   
  62.   
  63.         MultiByteToWideChar(936,   0,   szBuf,   nStrLen,   pws,   nStrLen   +   1);   
  64.         BOOL   bValue   =   false;   
  65.         WideCharToMultiByte(950,   0,   pws,   nStrLen,   szBuf,   nStrLen   +   1,   "? ",   &bValue);  
  66.         szBuf[nStrLen]   =   0;   
  67.         return szBuf;  
  68. }   
  69. //----------------------------------------------------------------------------   
  70. //   GB2312码转GBK码   
  71. //   中华人民共和国   -->   中華人民共和國   
  72. char * GB2GBK(char   *szBuf)   
  73. {   
  74.         if(!strcmp(szBuf,   " "))   
  75.         return 0;   
  76.         int   nStrLen   =   strlen(szBuf);   
  77.         DWORD   wLCID   =   MAKELCID(MAKELANGID(LANG_CHINESE,   SUBLANG_CHINESE_SIMPLIFIED),   SORT_CHINESE_PRC);   
  78.         int   nReturn   =   LCMapString(wLCID,   LCMAP_TRADITIONAL_CHINESE, szBuf,   nStrLen,   NULL,   0);   
  79.         if(!nReturn)   
  80.         return 0;   
  81.         char   *pcBuf   =   new   char[nReturn   +   1];   
  82.   
  83.         wLCID   =   MAKELCID(MAKELANGID(LANG_CHINESE,   SUBLANG_CHINESE_SIMPLIFIED),   SORT_CHINESE_PRC);   
  84.         LCMapString(wLCID,   LCMAP_TRADITIONAL_CHINESE,szBuf,   nReturn, pcBuf,   nReturn   +   1);   
  85.         strncpy(szBuf,   pcBuf,   nReturn);   
  86.         return szBuf;  
  87. }   
  88. //---------------------------------------------------------------------------   
  89. //   GBK码转GB2312码   
  90. //   中華人民共和國   -->   中华人民共和国   
  91. char * GBK2GB(char   *szBuf)   
  92. {   
  93.         if(!strcmp(szBuf,   " "))   
  94.         return 0;   
  95.         int   nStrLen   =   strlen(szBuf);   
  96.         WORD   wLCID   =   MAKELCID(MAKELANGID(LANG_CHINESE,   SUBLANG_CHINESE_SIMPLIFIED),   SORT_CHINESE_BIG5);   
  97.         int   nReturn   =   LCMapString(wLCID,   LCMAP_SIMPLIFIED_CHINESE, szBuf,   nStrLen,   NULL,   0);   
  98.         if(!nReturn)   
  99.         return 0;   
  100.         char   *pcBuf   =   new   char[nReturn   +   1];   
  101.   
  102.         wLCID   =   MAKELCID(MAKELANGID(LANG_CHINESE,   SUBLANG_CHINESE_SIMPLIFIED),   SORT_CHINESE_BIG5);   
  103.         LCMapString(wLCID,   LCMAP_SIMPLIFIED_CHINESE, szBuf,   nReturn, pcBuf,   nReturn   +   1);  
  104.         strncpy(szBuf,   pcBuf,   nReturn);   
  105.         return szBuf;  
  106. }   

转载请注明出处:http://blog.csdn.net/yf210yf/article/details/7854021


原创粉丝点击