转自:http://m.blog.csdn.net/article/details?id=8543525
在VC下编程,工程属性中有一属性Charecter Set属性,其值可以设置为Use Multi-Byte Charecter Set 和 Use Unicode Charecter Set 这两种选择,具默认情况下工程是采用了Use Unicode Charecter Set选项.
这两种不同字符集转化方法是不同的,网上很多方法没说清楚是哪种字符集,让很多人未能成功转换。
Use Unicode Charecter Set
Unicode编码模式
CString –>char *
CString str1 =_T("123");
int len =WideCharToMultiByte(CP_ACP,0,str1,-1,NULL,0,NULL,NULL);
char *ptxtTemp =new char[len +1];
WideCharToMultiByte(CP_ACP,0,str1,-1,ptxtTemp,len,NULL,NULL );
char * –>CString
char *p ="test";
CString str(p);
CString –>int
CString str2 =_T("100");
int i;
swscanf(str2,_T("%d"),&i);
int –>CString
int j =100;
CString str3;
str3.Format(_T("%d"),j);
Use Multi-Byte Charecter Set
宽(多)字节字符模式
使用多字符字符集需要额外安装一个语言包插件,生成解决方案时VS会提示并给出下载网址,下载安装即可
CString转string或char*
这种模式下可以直接将CString赋值给string
CString cstr="hello";
string str=cstr;
或者通过其他的转换方式
CString str1 ="123";
char *p =(LPSTR)(LPCSTR)str1;
或
CString str1 ="123";
char *t1 =str1.GetBuffer(str1.GetLength());
str1.ReleaseBuffer();
CString –>int
CString str1 ="123";
int i =atoi(str1);
int –>CString
int i =100;
CString str;
str.Format("%d",i);
char * –>CString
char *str ="aaaa"
CString str1(str);