vs2010 使用Unicode字符集 CString 与 char *相互转换

转载 2015年07月08日 14:52:32

CString转换为char *          

        CString strCheckIP ;
GetDlgItemText(IDC_IPADDRESS,strCheckIP);       

方法一:使用API:WideCharToMultiByte进行转换  

        //注意:以下n和len的值大小不同,n是按字符计算的,len是按字节计算的

int n = strIP.GetLength();                                           

        //获取宽字节字符的大小,大小是按字节计算的                  

int len = WideCharToMultiByte(CP_ACP,0,strIP,strIP.GetLength(),NULL,0,NULL,NULL);        

        //多字节字符数组申请空间,数组大小为按字节计算的宽字节字节大小

        char * pIP = new char[len+1];           //以字节为单位,

           //宽字节编码转换成多字节编码

WideCharToMultiByte(CP_ACP,0,strCheckIP,strCheckIP.GetLength(),pIP,len,NULL,NULL);      
pIP[len] ='\0';                                   //多字节字符以'\0'结束


方法二:使用函数:T2A、W2A   

       USES_CONVERSION;                                         //声明标识符
       char * pIP1 =T2A(strCheckIP);                              //调用函数,T2A和W2A均支持ATL和MFC中的字符转换
       addrTo.sin_addr.s_addr = inet_addr(pIP1);        //设置地址
       char * pIP2 = W2A(strCheckIP);                            //也可实现转换
       注意:有时候可能还需要添加引用#include  <afxpriv.h>


char *转换为CString    

        char szHostName[MAX_PATH + 1];

gethostname(szHostName, MAX_PATH);      //得到计算机名
hostent *p = gethostbyname(szHostName);    //从计算机名得到主机信息
if(p == NULL)
{
AfxMessageBox(L"得到本机网络信息失败!");
return NULL;
}

       char *pIP = inet_ntoa(*(in_addr *)p->h_addr_list[0]);               //将32位IP转化为字符串IP

方法一:使用_T() ,将字符串转换为宽字符     
CString str =_T("测试字符串转换");

方法二:使用API:MultiByteToWideChar进行转换   
CString m_strName;
//m_strName.Format(L"%s",szHostName);        //保存主机名 
        int charLen = strlen(szHostName);                      //计算char *数组大小,以字节为单位,一个汉字占两个字节    
        int len =MultiByteToWideChar(CP_ACP,0,szHostName,charLen,NULL,0);   //计算多字节字符的大小,按字符计算。     
       TCHAR *buf = new TCHAR[len + 1];                    //为宽字节字符数组申请空间,数组大小为按字节计算的多字节字符大小     
       MultiByteToWideChar(CP_ACP,0,szHostName,charLen,buf,len);          //多字节编码转换成宽字节编码
       buf[len] ='\0';                                                            //添加字符串结尾,注意不是len+1      
       m_strName.Append(buf);

方法三:使用函数:A2T、A2W   
CString m_strAddr;
//m_strAddr.Format(L"%s",pIP);                        //保存主机IP地址
USES_CONVERSION;
        m_strAddr = A2T(pIP);


LPARAM 转 CString     

        LPARAM lParam
//LPARAM->CString 方法一
CString str1((char*)lParam);


//LPARAM->CString 方法二
CString str2;
        str2 = (char*)lParam; // --运算符重载


//LPARAM->CString 方法三  vs2010 乱码 
CString str3;
str3.Format(L"%s", (char*)lParam);


Unicode 下char*与CString相互转换

转自:http://blog.csdn.net/neverup_/article/details/5664733 1、Unicode下CString转换为char *方法一:使用API:WideCh...
  • u010829733
  • u010829733
  • 2015年08月04日 11:05
  • 2276

VC++的多字符集和unicode字符集转换大全(CString转char*等)

CString与LPCWSTR、LPSTR、char*、LPWSTR等类型的转换 _T的意思是通知编译器,自行进行字符串的多字节/Unicode转换。 而L表示,该字符串为Unicode...
  • q357010621
  • q357010621
  • 2016年04月26日 23:58
  • 1049

MFC中,Unicode和多字节字符集下 CString和char的转化

1.unicode下,转换字符串形式为_T("HelloWorld"); 2.MBCS下,转换字符串的形式为"HelloWorld"     多字节字符集 (MBCS) 是一种替代 Unico...
  • xinm1001
  • xinm1001
  • 2016年10月09日 21:34
  • 1110

C++ Cstring 转 const * char (Unicode 及非Unicode)

Unicode 编码的: 最简单的办法 #include CString m_toSend = "中文"; USES_CONVERSION; char *psz = T2A(m_toSend); 没...
  • qqIM123
  • qqIM123
  • 2016年08月30日 10:38
  • 1143

多字节字符集下CString转char*

char* buf; CString str="hello"; buf=(LPSTR)(LPCTSTR)str;
  • Tiancaizhaohaiwei
  • Tiancaizhaohaiwei
  • 2015年08月19日 10:28
  • 329

Unicode与多字节字符集

有关Unicode与多字节字符集的介绍这里不再赘述,摘抄一段话(忘记出处了),说明一下为什么我们需要Unicode。 我们可以在一台机器上阅读多个国家不同语言的文档了,前提是本机必须安装该文档使用...
  • butterflyfly007
  • butterflyfly007
  • 2015年07月05日 22:28
  • 1064

VS2010 将CString转换成char* 或const char*

VS2010 将CString转换成char* 或const char*网上介绍了各种方法,令你眼花缭乱, 但很多方法其实在vs2010下是不凑效的,他们说的大部分方法都是在VC6.0下的转换。而在...
  • xufuyuan
  • xufuyuan
  • 2015年03月25日 14:21
  • 1057

Unicode字符集下CString与char *转换 (解决中文乱码等)(转)

1、Unicode下CString转换为char * 方法一:使用API:WideCharToMultiByte进行转换              CStringstr = _T("D:\...
  • u011729425
  • u011729425
  • 2014年04月14日 16:13
  • 1724

Unicode编码的项目中CString、char* 、wstring、string的相互转换

1、CString转char* 可以使用以下函数: static char* StringToChar(CString str){ //获取字符串大小 int len = WideCharTo...
  • cyloser
  • cyloser
  • 2016年03月12日 20:27
  • 868

CString 和 const char* 的相互转化(UNICODE)

1. const char* To CString const char* c;c = "abcdef";CString s;int len = strlen(c);TCHAR* c1 = (TCHA...
  • cosair
  • cosair
  • 2010年04月12日 09:14
  • 2946
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vs2010 使用Unicode字符集 CString 与 char *相互转换
举报原因:
原因补充:

(最多只允许输入30个字)