第一种方法:
头文件:
#include <atlconv.h>//在MFC按钮事件里没加运行居然也正常
USES_CONVERSION;//必须加,T2A依赖这个
CString cstr;
cstr = "十全十美";
char* name1 = "十全十美";
char* name2 = T2A(cstr);
if (cstr == name2)
{
DbgPringtf_Mine2("========成功===================\r\n");
}
if (strcmp(name1, name2)==0)
{
DbgPringtf_Mine2("========成功===================\r\n");
}
这种方法当前文件测试没问题,跨文件后字符串的值变了!
[5764] AAAAA:=========名字:苏苏,地址:3f91598====================
[5764] AAAAA:========名字:?齰$?,地址:3f91598====================
我感觉只适合当前文件的字符串比较,不能用于跨文件的字符串传递!
还好又找到一段可以用的代码- -!
第二种方法(推荐):
char* CStringtochar(CString str)
{
char* ptr;
#ifdef _UNICODE
LONG len;
len = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);
ptr = new char[len + 1]; memset(ptr, 0, len + 1);
WideCharToMultiByte(CP_ACP, 0, str, -1, ptr, len + 1, NULL, NULL);
#else
ptr = new char[str.GetAllocLength() + 1];
sprintf(ptr, _T("%s"), str);
#endif
return ptr;
}