注意:以下方法在Character Set 选 Use Multi-Byte Character Set时有效!
☆☆声明以下变量
CString strMFC;
string str;
char *p;
char ch[100];
PS:以下转换可能有多种实现方式,代码中用注释列出。
一、CString 转转string char* char[ ];
strMFC = _T("光学跟踪@opticaltracker");//赋值
/*
**转string *3
*/
str = strMFC.GetBuffer(0);
//str = strMFC.GetBuffer();
//str = strMFC.GetBuffer(strMFC.GetLength());
/*
**转char* *2
*/
p = strMFC.GetBuffer(0);
//p = (LPSTR)(LPCSTR)strMFC;
/*
**转char[] *3
*/
memcpy(ch, strMFC.GetBuffer(), strMFC.GetLength()*sizeof(char));
//strncpy_s(ch, strMFC.GetBuffer(), strMFC.GetLength()*sizeof(char));
//strcpy_s(ch, strMFC.GetBuffer(0));
☆ 结果如下图:
二、string转转CString char* char[ ];
str = _T("光学跟踪@opticaltracker");
/*
**转CString *1
*/
strMFC = str.c_str();
/*
**转char* *2
*/
p = (char*)str.c_str();
//p = (char*)str.data();
/*
**转char[] *1
*/
strcpy_s(ch, str.c_str());
☆ 结果如下图:
三、char* 转转CString string char[ ];
p = _T("光学跟踪@opticaltracker");
/*
**转CString *1
*/
strMFC.Format(_T("%s"),p);
/*
**转string *1
*/
str = p;
/*
**转char[] *2
*/
strcpy_s(ch,p);
//memcpy(ch,p,sizeof(ch));
☆ 结果如下图:
四、char[ ] 转转CString string char*;
strcpy_s(ch, _T("光学跟踪@opticaltracker") );
/*
**转CString *2
*/
strMFC = ch;
//strMFC.Format(_T("%s"),ch);
/*
**转string *1
*/
str = ch;
/*
**转char* *1
*/
p = ch;
☆ 结果如下图: