TCHAR数组转到CString很简单:使用CString的Format
TCHAR m_buf[100] = _T("Hello"); CString str; str.Format(L"%s",m_buf);
CString转为TCHAR数组,使用_tcscpy()宏
CString str = L"txwtech"; TCHAR m_buf[20]; _tcscpy(m_buf, str);
///------------------------------------------------------------------------------------------------
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::stringCString 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));