申明:本文非笔者原创,原文转载自:http://blog.youkuaiyun.com/qqim123/article/details/52367179
Unicode 编码的:
最简单的办法
#include<AtlBase.h>
CString m_toSend = “中文”;
USES_CONVERSION;
char *psz = T2A(m_toSend);
复杂点的办法:
// Setlocale,本函数用来配置地域的信息,设置当前程序使用的本地化信息。配置地域化信息函数 #include <locale.h>
const wchar_t* wstr = (LPCTSTR)m_toSend; //一定得是unicode,否则这句话会错的
size_t strsize = (m_toSend.GetLength() + 1) * 2; // 宽字符的长度;
char * pstr = new char[strsize];
memset(pstr, 0, strsize);
size_t n=0;
setlocale(LC_ALL, “zh-CN”);//调用wcstombs之前先调setlocale(LC_ALL, “zh-CN”);否则wcstombs不会处理超过255的字符
int a =wcstombs_s(&n, pstr, strsize, wstr,_TRUNCATE ); //如果有中文最后一个参数不能用wcslen(wstr)来当最大字节数,会漏数据,用默认的_TRUNCATE 就可以
待研究的:
//WideCharToMultiByte()
非Unicode 编码
1 string to CString
CString.format(“%s”,string.c_str());
2 CString to string
string str(CString.GetBuffer(str.GetLength()));
3 string to char *
char *p=string.c_str();
4 char * to string
string str(char*);
5 CString to char *
strcpy(char,CString,sizeof(char));
6 char * to CString
CString.format(“%s”,char*);