vs2010 使用Unicode字符集 CString 与 char *相互转换
2015-07-08 14:52
417 查看
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);
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);
相关文章推荐
- 浅析Oracle中char和varchar2的区别
- C#实现将千分位字符串转换成数字的方法
- oracle SCN跟TIMESTAMP之间转换
- C#将制定目录文件名转换成大写的方法
- C#实现Stream与byte[]之间的转换实例教程
- C#中结构体和字节数组转换实现
- C#进制之间的相互转换详解
- 自己动手把ACCESS转换到SQLSERVER的方法
- Visual C++中MFC消息的分类
- C语言将24小时制转换为12小时制的方法
- MFC中Radio Button的用法详解
- MFC创建右键弹出菜单的方法
- MFC中动态创建控件以及事件响应实现方法
- C++ 关于MFC多线程编程的注意事项
- MFC程序对文件的处理方法
- MFC自定义消息的实现方法
- MFC之ComboBox控件用法实例教程
- C#实现HSL颜色值转换为RGB的方法
- C#利用微软自带库进行中文繁体和简体之间转换的方法
- php将字符串转换成16进制的方法