1、 CString 转换为char*
方法一:
CString origCString("Hello, World!");
wchar_t* wCharString = origCString.GetBuffer(origCString.GetLength()+1);
size_t origsize = wcslen(wCharString) + 1;
size_t convertedChars = 0;
char *CharString;
CharString=new char(origsize);
wcstombs_s(&convertedChars, CharString, origsize, wCharString , _TRUNCATE);
cout << CharString << endl;
成功输出字符串"Hello,World"s
方法二:
charuser[15];
memset(user, 0, 15);
int len;
len = WideCharToMultiByte(CP_ACP , 0 , m_userID ,m_userID.GetLength() ,NULL , 0 , NULL ,NULL );
len = WideCharToMultiByte(CP_ACP , 0 , m_userID ,m_userID.GetLength() ,user , len +1 ,NULL ,NULL );
user[len] = 0;
方法三:
CString str = _T("Hello");
int nLen = str.GetLength() ;
char *buf = new char[nLen] ;
string ss = CStringA(str) ;
strcpy(buf, ss.c_str()) ;
2、char*转换为CString类型
方法一:
字符数组char buf[100]转换为CString str;
1)非Unicode情况:str.Format(“%s”, buf);
2)Unicode情况:char* buf="hello world"; CString str; str = CA2CT(buf);
利用MFC的CStringA类的构造函数来将这两种类型相互转换。
UNICODE字符集下:
CString转换为char*
CString strW = TEXT(“宽字节字符串TCHAR”);
CStringA strA(strW);
//这里通过CStringA的构造函数将strW转换为了strA,strA的元素是char类型的。
char * p = strA.GetBuffer();
char* 转化为CString
char * p = “char类型的数据”;
CStringA strA(p);
//转换为CStringA
CString strW(strA);