char * CString2charArray(CString str) { std::string str2; str2=_bstr_t(str).operator const char*(); char szText[1024]; //memset(Buff,0,1024); //strcpy(Buff,str2); std::sprintf(szText,"%s",str2.c_str()); return szText; } 、、、、、、、、 CString就是宽字节,如果项目创建的字符集是Unicode 字符集,那么某些地方就需要转换 比如vs2013默认项目,unicode 字符集。 需要用到socket的send发送数据,如果CString str=txwtech, str.getbuffer(0)发送,则只会发送第一个字符 // 所以需要转换 char lpsz=wchat2char(str), 再用m_SocketClient.send(lpsz,str.GetLength());就可以了 wchar_t * char2wchar(const char cchar) { wchar_t m_wchar; int len = MultiByteToWideChar( CP_ACP ,0,cchar ,strlen( cchar), NULL,0); m_wchar= new wchar_t[len+1]; MultiByteToWideChar( CP_ACP ,0,cchar,strlen( cchar),m_wchar,len); m_wchar[len]= ‘\0’ ; return m_wchar; } char * wchar2char(const wchar_t wchar ) { char * m_char; int len= WideCharToMultiByte( CP_ACP ,0,wchar ,wcslen( wchar ), NULL,0, NULL ,NULL ); m_char= new char[len+1]; WideCharToMultiByte( CP_ACP ,0,wchar ,wcslen( wchar ),m_char,len, NULL ,NULL ); m_char[len]= ‘\0’; return m_char; }
std::string转数组s_str() Char szText[100]; string str1=”abcdefg”; sprint_s(szText,sizeof(szText),”%s…”,str1.c_str()); 或 std::sprintf(szText,”…%s…”,str1.c_str());
char数组转CString字符串(宽字节) char aa[100]; CString csStr; csStr=_bstr_t(aa).operator TCHAR*();
CString转std::string CString csStr; csStr=”qwert”; std::string str2; str2=_bstr_t(csStr).operator const char*();
CString转char数组 CString->std::string Std::string->char数组
string赋值给 char[] std::string str=”abcdefg”; char Buff[1024]; memset(Buff,0,1024); strcpy(Buff,str,strlen(Buff));