vs2010 unicode 下类型转换CString,char*,char,string,int,double

Unicode下 string 转 CString
string msg = "";
CString cs;
cs.Format(_T("%s"),CStringW(msg.c_str())); //CStringW是为了防止乱码

Unicode下CString转换为char *

//方法一:使用API:WideCharToMultiByte进行转换
              CString str = _T("D:\\校内项目\\QQ.bmp");
            //注意:以下n和len的值大小不同,n是按字符计算的,len是按字节计算的
              int n = str.GetLength();     // n = 14, len = 18
             //获取宽字节字符的大小,大小是按字节计算的
             int len = WideCharToMultiByte(CP_ACP,0,str,str.GetLength(),NULL,0,NULL,NULL);
             //为多字节字符数组申请空间,数组大小为按字节计算的宽字节字节大小
            char * pFileName = new char[len+1];   //以字节为单位
            //宽字节编码转换成多字节编码
            WideCharToMultiByte(CP_ACP,0,str,str.GetLength(),pFileName,len,NULL,NULL);
             pFileName[len+1] = '\0';   //多字节字符以'\0'结束
//方法二:使用函数:T2A、W2A
             CString str = _T("D:\\校内项目\\QQ.bmp");
              //声明标识符
             USES_CONVERSION;
             //调用函数,T2A和W2A均支持ATL和MFC中的字符转换
             char * pFileName = T2A(str);  
            //char * pFileName = W2A(str); //也可实现转换
            注意:有时候可能还需要添加引用#include   <afxpriv.h>

Unicode下char *转换为CString
char *pch = "ddd";	
CString cs;
cs.Format(_T("%s"),CStringW(pch));

Unicode下 CString类型的转换成int

CString aaa = "16" ;    
int int_chage = atoi((lpcstr)aaa) ;   

unicode 下 string转换char*

void CegDlg::strToChar(string str,char* &ch)  //要转换的字符串str  接受*ch      
{
	CString cs;
	cs.Format(_T("%s"),CStringW(str.c_str()));//先转换成cstring  
	int len = WideCharToMultiByte(CP_ACP,0,cs,cs.GetLength(),NULL,0,NULL,NULL);
	char * pFileName = new char[len];  
	memset(pFileName,0,sizeof(pFileName));
	WideCharToMultiByte(CP_ACP,0,cs,cs.GetLength(),pFileName,len,NULL,NULL);
	pFileName[len] = '\0';  
	ch = pFileName;
}

在Unicode下的CString to double
CSting sTemp("123.567");
double dTemp = _wtof(sTemp.GetString());

在Unicode下的char* 转 int

char *ch ="32";
int  i  =  atoi(ch);



你可能感兴趣的:(vs2010 unicode 下类型转换CString,char*,char,string,int,double)