这个问题很纠结,由于unicode的缘故,搞得我这个新手很无奈。还好解决了,现将方式写下,希望以后能找到更好的方法。
CString->string (需要两次转换)
string C2S(CString cstr)
{
LPTSTR lpsz = new TCHAR[cstr.GetLength()+1];
_tcscpy(lpsz, cstr);
char *p=new char[(cstr.GetLength()+1)*2];
WideCharToMultiByte(CP_ACP, 0, lpsz, -1, p, strlen(p), NULL, NULL);
string str = p;
return str;
};
string-> CString (这个利用CString的构造函数)
CString S2C(string str)
{
CString cstr(str.c_str());
return cstr;
};
char *->LPTSTR
LPTSTR Char2LPTSTR(char *p)
{
int l=MultiByteToWideChar(CP_ACP,0,p ,-1,NULL,0);
LPTSTR s=new TCHAR[l];
MultiByteToWideChar(CP_ACP,0,p ,-1,s,l);
return s;
};
LPTSTR->CString(使用format)
LPTSTR str;
CString cstr;
cstr.Format(_T("%s"),str);