wchar_t 转 char* 的问题
1:数据源部分
a: wchar_t orig[200]={_T("sdfsdf")};
b: wchar_t orig[200];
LoadStringW(m_hdll,10000,orig,200);
2:公共部分
size_t origsize = wcslen(orig) + 1;
size_t convertedChars = 0;
const size_t newsize = origsize*2;
char *nstring = new char[newsize];
wcstombs_s(&convertedChars, nstring, newsize, orig, _TRUNCATE);
如果数据源为a,执行公共部分代码,nstring有值,
如果数据源为b,执行公共部分代码,nstring无值,loadstringw执行后,orig是有值的
求高手指点
[解决办法]
wstring转string
std::string StringHelper::WString2String(std::wstring wstr)
{
int len =-1;
char* pszDst=NULL;
len=WideCharToMultiByte(CP_ACP,0,wstr.c_str(),wstr.length(),NULL,0,NULL, NULL);
if ( len<= 0)
return std::string("");
pszDst = new char[len+1];
memset( pszDst,0, (len+1)*sizeof(char));
if ( NULL == pszDst)
return std::string("");
WideCharToMultiByte( CP_ACP, 0,wstr.c_str(),wstr.length(),pszDst, len,NULL, NULL);
std:: string strTemp( pszDst);
delete [] pszDst;
return strTemp;
}